c语言实用小程序

ASCII编码程序:

#include <stdio.h>

Int main(void)

{ char x=?(num); printf(“%c”,x); return 0; }

解码:char x=’?(字符即字母或标点)’; print(“%d”,x);~

//* typesize.c -- 打印类型大小 */

#include <stdio.h> int main(void)

{/* C99为类型大小提供%zd转换说明 */

printf("Type int has a size of %zd bytes.\n",

sizeof(int));

printf("Type char has a size of %zd bytes.\n",

sizeof(char));

printf("Type long has a size of %zd bytes.\n",

sizeof(long));

printf("Type long long has a size of %zd bytes.\n",

sizeof(long long));

printf("Type double has a size of %zd bytes.\n",

sizeof(double));

printf("Type long double has a size of %zd bytes.\n",

sizeof(long double));

return 0;}

递增运算符辅助理解程序:

#include <stdio.h>

int main(void)

{

int a=1,b=1;

int a_post,pre_b;

a_post=a++;

pre_b=++b;

printf("a a_post b pre_b \n");

printf("%1d %5d %5d\n",a,a_post,b,pre_b);

return 0; }

输出结果:a a_post b pre_b:a_post是a递增之前的值,而b_pre是b递增之后的值。

2 1 2 2

a_post = a++; // 后缀:使用a的值后,递增a

b_pre= ++b; // 前缀:使用b的值前,递增b

判断真假示例程序:

#include<stdio.h>

int main(void)

{ int true,false;

true=(10>2);//关系为真的值

false=(10==2);//关系为假的值

printf("true=%d;false=%d",true,false); return 0; }

for循环辅助理解程序:
#include <stdio.h>

int main(void)

{ const int NUMBER = 22;

int count;

for (count = 1; count <= NUMBER; count++)

printf("Be my Valentine!\n"); return 0; }

do while 循环辅助理解程序:

#include <stdio.h>

int main(void)

{ const int secret_code = 13;

int code_entered;

do{ printf("To enter the triskaidekaphobia therapy club,\n");

printf("please enter the secret code number: ");

scanf("%d",&code_entered); }

while (code_entered != secret_code);

printf("Congratulations! You are cured!\n");

return 0; }

ANSI原型声明函数辅助理解程序:

double power(double n, int p);//函数声明

xpow = power(x, exp); // 函数调用???为什么x/exp可以取代n/p

double power(double n, int p) // 函数定义

{double pow = 1;

int i;

for (i = 1; i <= p; i++)

pow *= n;

return pow; // 返回pow的值 }

continue语句辅助理解程序:

const float MIN=0.0f;

const float MAX=100.0f;

float score;

float total=0.0f;

int n=0;

float min=MAX;

float max=MIN;

printf("Enter the first score(q to quit):");

while(scanf("%f",&score)==1)

{

if(score<MIN||score>MAX)

{

printf("%0.1f is an invalid value.Try again:",score);

continue;//跳转至while循环的测试条件

}

printf("Accepting%0.1f:\n",score);

min=(score<min)?score:min;

max=(score>max)?score:max;

total+=score;

n++;

printf("Enter next score(q to quit):");

}

if(n>0)

{

printf("Average of %d scores is %0.1f.\n",n,total/n);

printf("Low=%0.1f,high=%0.1f\n",min,max);

}

else

printf("No valid scores were entered.\n");

return 0;

swich语句辅助理解程序

该表达式是刚输入给 ch的值。然后程序扫描标签(这里指,case 'a' :、case 'b' :等)列表,直到发现一个匹配的值为止。然后程序跳转至那一行。如果没有匹配的标签怎么办?如果有default :标签行,就跳转至该行;否则,程序继续执行在switch后面的语句。break语句在其中让程序离开switch语句,跳至switch语句后面的下一条语句。如果没有break语句,就会从匹配标签开始执行到switch末尾。例如,如果删除该程序中的所有break语句,运行程序后输入d,其交互的输出结果会执行从case 'd':到switch语句末尾的所有语句。

switch (ch)

{

case 'a':

printf("argali, a wild sheep of Asia\n");

break;

case 'b':

printf("babirusa, a wild pig of Malay\n");

break;

case 'c':

printf("coati, racoonlike mammal\n");

break;

case 'd':

printf("desman, aquatic, molelike critter\n");

break;

case 'e':

printf("echidna, the spiny anteater\n");

break;

case 'f':

printf("fisher, brownish marten\n");

break;

default:

printf("That's a stumper!\n"); } /* switch结束 */

重复输入,直到文件结尾程序

#include <stdio.h>

int main(void)

{ int ch;

while ((ch = getchar()) != EOF)

putchar(ch);

return 0; }

变量ch的类型从char变为int,因为char类型的变量只能表示0~255的无符号整数,但是EOF的值是-1。getchar()函数实际返回值的类型是int,所以它可以读取EOF字符。如果实现使用有符号的char类型,也可以把ch声明为char类型。使用该程序进行键盘输入,要设法输入EOF字符。不能只输入字符EOF,也不能只输入-1(输入-1会传送两个字符:一个连字符和一个数字1)。正确的方法是,必须找出当前系统的要求。例如,在大多数UNIX和Linux系统中,在一行开始处按下Ctrl+D会传输文件结尾信号。一些系统把任意位置的Ctrl+Z解释成文件结尾信号。

排除缓冲区换行符影响示例:

while (getchar() != 'y') /* 获取响应,与 y 做对比*/

{

printf("Well, then, is it %d?\n", ++guess);

while (getchar() != '\n')

continue; /* 跳过剩余的输入行 */ }

输出地址的转换说明示例:

pooh = 24;

假设pooh的存储地址是0B76(PC地址通常用十六进制形式表示)。那么,下面的语句:

printf("%d %p\n", pooh, &pooh);

将输出如下内容(%p是输出地址的转换说明):24 0B76

指针辅助理解程序示例:

#include <stdio.h>

void interchange(int * u, int * v);

int main(void)

{int x = 5, y = 10;

printf("Originally x = %d and y = %d.\n", x, y);

interchange(&x, &y); // 把地址发送给函数,该函数传递的不是x和y的值,而是它们的地址。这意味着出现在interchange()原型和定义中的形式参数u和v将把地址作为它们的值。因

此,应把它们声明为指针。

printf("Now x = %d and y = %d.\n", x, y);

return 0; }

void interchange(int * u, int * v)

{int temp;

temp = *u; // temp获得 u 所指向对象的值,u的值是&x,所以u指向x。这意味着用*u即可表示x的值,

*u = *v;

*v = temp; }

数组声明示例:

int main(void)

{ float candy[365]; /* 内含365个float类型元素的数组 */

char code[12]; /*内含12个char类型元素的数组*/

int states[50]; /*内含50个int类型元素的数组 */ ...}

初始化数组程序示例:

int powers[8] = {1,2,4,6,8,16,32,64};

用以逗号分隔的值列表(用花括号括起来)来初始化数组,各值之间用逗号分隔。在逗号和值之间可以使用空格。

数组的数组即多维数组声明示例:

float rain[5][12]; // 内含5个数组元素的数组,每个数组元素内含12个float类型的元素。说明每个元素的类型是float[12],也就是说,rain的每个元素本身都是一个内含12个float类型值的数组。rain[0]是一个数组,那么它的首元素就是 rain[0][0],第 2 个元素是rain[0][1],以此类推。

指针加一辅助理解程序示例:

#include <stdio.h>

#define SIZE 4

int main(void)

{short dates[SIZE];

short * pti;

short index;

double bills[SIZE];

double * ptf;

pti = dates; // 把数组地址赋给指

ptf = bills;

printf("%23s %15s\n", "short", "double");

for (index = 0; index < SIZE; index++)

printf("pointers + %d: %10p %10p\n", index, pti + index, ptf + index);

return 0; }

在C中,指针加1指的是增加一个存储单元。对数组而言,这意味着把加1后的地址是下一个元素的地址,而不是下一个字节的地址。在指针前面使用*运算符可以得到该指针所指向对象的值。指针加1,指针的值递增它所指向类型的大小(以字节为单位)。

dates + 2 == &date[2] // 相同的地址 *(dates + 2) == dates[2] // 相同的值

编写一个处理数组的函数示例:

阐明包含数组元素个数的信息。第一种方法:在函数代码中写上固定的数组大小

int sum(int * ar) // 相应的函数定义,对应的函数原型

{

int i;

int total = 0;

for (i = 0; i < 10; i++) // 假设数组有10个元素

total += ar[i]; // ar[i] 与 *(ar + i) 相同

return total; }

sum()从该参数获得了什么信息?它获得了该数组首元素的地址,知道要在该位置上找出一个整数。

第二种:

int sum(int * ar, int n) // 更通用的方法

{int i;

int total = 0;

for (i = 0; i < n; i++) // 使用 n 个元素

total += ar[i]; // ar[i] 和 *(ar + i) 相同

return total; }

只有在函数原型或函数定义头中,才可以用int ar[]代替int * ar。int *ar形式和int ar[]形式都表示ar是一个指向int的指针。

声明数组形参:因为数组名是该数组首元素的地址,作为实际参数的数组名要求形式参数是一个与之匹配的指针。只有在这种情况下,C才会把int ar[]和int * ar解释成一样。也就是说,ar是指向int的指针。由于函数原型可以省略参数名,所以下面4种原型都是等价的:

int sum(int *ar, int n); int sum(int *, int); int sum(int ar[], int n); int sum(int [], int);

但是,在函数定义中不能省略参数名。下面两种形式的函数定义等价:

int sum(int *ar, int n); int sum(int ar[], int n);

表现字符串的多种方式示例:

#include <stdio.h>

#define MSG "I am a symbolic string constant."

#define MAXLENGTH 81

int main(void)

{char words[MAXLENGTH] = "I am a string in an array.";

const char * pt1 = "Something is pointing at me.";//指针表示法创建字符串

puts("Here are some strings:");

puts(MSG);

puts(words);

puts(pt1);

words[8] = 'p';

puts(words);

return 0; }

自定义输入/输出函数示例:打印字符串,不添加换行符:

#include <stdio.h>

void put1(const char * string)/* 不会改变字符串 */

{while (*string != '\0')

putchar(*string++); }

判断素数:

#include <stdio.h>

#include <stdbool.h>

int main(void)

{

unsigned long num; // 待测试的数

unsigned long div; // 可能的约数

bool isPrime; // 素数标记

printf("Please enter an integer for analysis; ");

printf("Enter q to quit.\n");

while (scanf("%lu", &num) == 1)

{

for (div = 2, isPrime = true; (div * div) <= num; div++)

{

if (num % div == 0)

{

if ((div * div) != num)

printf("%lu is divisible by %lu and %lu.\n",

num, div, num / div);

else

printf("%lu is divisible by %lu.\n",

num, div);

isPrime = false; // 该数不是素数

}

}

if (isPrime)

printf("%lu is prime.\n", num);

printf("Please enter another integer for analysis; ");

printf("Enter q to quit.\n");

}

printf("Bye.\n");

return 0;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/808717.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ai皮带跑偏撕裂监测系统功能

ai皮带跑偏撕裂监测系统功能基于人工智能视觉技术,ai皮带跑偏撕裂监测系统功能自动识别现场监控画面中传送皮带撕裂、跑偏、偏移等情况,当ai皮带跑偏撕裂监测系统功能检测出皮带出现撕裂或者跑偏现象后,立即告警抓拍存档同步回传后台提醒及时处理,提高煤矿的智能化水平和人…

订单交易平台一

简介:订单交易平台核心的功能模块:认证模块,用户名密码 或 手机短信登录(60s有效)。角色管理,不同角色具有不同权限 和 展示不同菜单。 管理员,充值客户,下单客户管理,除了基本的增删改查以外,支持对客户可以分级,不同级别后续下单折扣不同。交易中心管理员可以给客…

学习“基于VirtualBox虚拟机安装Ubuntu图文教程”

安装过程中出现了很多问题第一次安装没有下载ubtun20.04 镜像 第二次安装不知道如何下载bzip2,导致一直安装增强功能 第三次在上B站搜索视频讲解后成功安装好了

wintools premium 24.10.1 注册分析

wintools premium 24.10.1 目录wintools premium 24.10.1NAGSCREEN_proc_472350check_472BF0pyps win32 程序,程序注册逻辑简单,关注窗口事件、控件id可快速定位到关键逻辑。 NAGSCREEN_proc_472350 INT_PTR __thiscall NAGSCREEN_proc_472350(void *this, HWND hDlg, UINT a…

项目部署二:服务器和环境配置

2.服务和环境配置 下面的配置和操作均在腾讯云服务器+CentOS 7.5的系统下进行。 2.1 MySQL安装服务端 yum install mariadb-server -y mariadb-server.x86_64 1:5.5.68-1.el7安装客户端 yum install mariadb -y 软件包 1:mariadb-5.5.68-1.el7.x86_64 已安装并且是最新版本服务…

freeRTOS源码解析4--tasks.c 7

4.2.20 空闲任务调用1--prvCheckTasksWaitingTermination 删除所有终止的任务, 释放资源。简单描述就是清空xTasksWaitingTermination列表,释放资源,递减uxCurrentNumberOfTasks和uxDeletedTasksWaitingCleanUp。接口:static void prvCheckTasksWaitingTermination( void )接…

软件工程师课程辅导

Day1 环境搭建下载vscode下载链接:https://pan.baidu.com/s/1Oo1TIrAKmlEuEfdn9EXgLQ?pwd=nkt9配置vscode的python开发环境教程:https://www.runoob.com/python3/python-vscode-setup.html安装Pycharm下载教程:https://blog.csdn.net/qq_44809707/article/details/12250111…

PAIRDISTILL: 用于密集检索的成对相关性蒸馏方法

在当今海量数据时代,有效的信息检索(IR)技术对于从庞大数据集中提取相关信息至关重要。近年来,密集检索技术展现出了相比传统稀疏检索方法更加显著的效果。 现有的方法主要从点式重排序器中蒸馏知识,这些重排序器为文档分配绝对相关性分数,因此在进行比较时面临不一致性的挑战。…

School New Competition WP

试验一下博客园的基础功能,顺便把学校战队招新赛的Wp传一下, alpaca_search: 直接burp爆破把密码搞出来,在burp多抓几次包会在正确的包里发现一个新的cookie名count,count记录了正确的值 ,然后把它改成999再多发几次包,发到正确的那一个后就拿到了flag RCE_ME!!! 题目直…

pytorch环境安装

pytorch环境安装 1.基础安装 首先安装anaconda打开,进入base,输入命令,这里-n后跟的是环境名字,再往后是python版本,不要太高 conda create -n pytorch python=3.8安装的时候有按y的就按y 创建成功后使用下面命令进入创建的环境 conda activate pytorch2.安装需要的库 pip…

[Trick] 格路记数 - 反射容斥

Perface 模拟赛不会被冲烂了。 Problem I 从 \((0,0)\) 到 \((n,m)\) 方案数。 解法: \(C(n+m,m)\)。 Problem II 从 \((0,0)\) 到 \((n,m)\) 方案,但是不能经过 \(y=x+b\) 的直线。 解法: 考虑映射法。 以一条路径第一次碰到直线的位置为起点,之后所有的路线和 \(y=x+b\) …

Burp功能 细解析

情境 第六周的培训甚是有趣, 更加详细的介绍了Burp工具的功能和使用细节. 虽然很有趣, 但是我学得很慢, 练习达到熟练掌握还需要练习. 以下是第五次培训的练习题 以及我的解答. 最后一题手生, 一开始没做出来.1、安装burp,分别在本机上实现全局代理和局部代理,提供设置过程的…