C程序题库+几种句型+小结.docx

上传人:牧羊曲112 文档编号:3060685 上传时间:2023-03-10 格式:DOCX 页数:27 大小:44.22KB
返回 下载 相关 举报
C程序题库+几种句型+小结.docx_第1页
第1页 / 共27页
C程序题库+几种句型+小结.docx_第2页
第2页 / 共27页
C程序题库+几种句型+小结.docx_第3页
第3页 / 共27页
C程序题库+几种句型+小结.docx_第4页
第4页 / 共27页
C程序题库+几种句型+小结.docx_第5页
第5页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C程序题库+几种句型+小结.docx》由会员分享,可在线阅读,更多相关《C程序题库+几种句型+小结.docx(27页珍藏版)》请在三一办公上搜索。

1、C程序题库+几种句型+小结常见的错误类型: 1、您的程序想从一些非法的地址空间读取或向其中写入内容。一般例如指针、数组下标越界都会造成这个错误的。 2、您的程序试图访问一个超出硬件支持范围的数组单元。 3、进行了一个非正常的浮点操作。一般是由于一个非正常的浮点数参与了浮点操作所引起的,比如这个数的浮点格式不正确。 4、浮点数除法出现除数为零的异常。 5、在进行整数除法的时候出现了除数为零的异常。 6、栈溢出。一般是由于无限递归或者在函数里使用了太大的数组变量的原因。 小结归纳及错误检查 1.输入看是否漏掉符号“&”。括号是否成对。 2.判断素数时要弄清1是不是素数,判断偶数时要弄清0是不是偶数

2、,部分题目中情况会有变化 3.多组测试数据中每次数据是否初始化。 4.程序开始部分有没有加声明。如复杂数学计算时要加上#include 几种句型 1.数字输入输出语句 Input 输入一个整数。 Output 输出刚才输入的那个整数,并换行。 #include int main int a; scanf(%d,&a); printf(%dn,a); 2.输出特殊字符 Input 没有输入 Output 输出%d #include int main int a=37,b=100; printf(%c%cn,a,b); 3.字符输入输出语句 Input 输入一个字符,以回车确认 Output 输出

3、你刚才输入的字符 #include #include int main char c; c=getchar; printf(%cn, c); 4.字符串输入输出语句/利用ascall码表输出特殊字符 Input 输入一行字符,中间可能有空格,回车表示输入完毕。 Output 输出也为一行,输出刚才输入的内容。 #include #include int main char c1000; int len, i; gets(c); len = strlen(c); for (i=0; ilen; i+) printf(%c, ci); printf(n); 5.多组测试数据简单计算 Input 多

4、组测试数据,每组输入两个整数a和b Output 输出a+b的值,并换行 #include int main int a,b; while(scanf(%d %d,&a,&b)!=EOF) printf(%dn,a+b); 6.循环语句 Input 输入正整数n Output 输出1+2+3+.+n的值 #include int main int N,sum=0,i=1; scanf(%d,&N); while(i=N) sum=sum+i; i+; printf(sum=%dn,sum); 7.双层循环语句 Input 输入正整数n Output 输出n*n的乘法口诀表 #include i

5、nt main int i,j,n; while(scanf(%d,&n)!=EOF) for(i=1;i=n;i+) for(j=1;j=i;j+) if(i*j10) printf(%d*%d=%d ,j,i,i*j); else printf(%d*%d=%d ,j,i,i*j); printf(n); printf(n); 8.if条件语句 Input 输入2个整数, Output 输出两个数中较大的那个数 #include int main int a,b; scanf(%d%d,&a,&b); if(ab) printf(%dn,a); else printf(%dn,b); 9.

6、多层if条件语句 Input 输入3个整数, Output 从大到小输出,中间用空格隔开 #include int main int a,b,c; scanf(%d%d%d,&a,&b,&c); if(ab) if(ac) printf(%dn,a); else if(bc) printf(%dn,b); else printf(%dn,b); else if(bc) printf(%dn,b); else printf(%dn,c); 10.一维数组 Input 多组测试数据。第一行输入一个整数T表示测试数据组数 每组首先输入1个整数n,然后输入n个整数(不大于20) Output 对于每组

7、测试数据按照输入相反的顺序输出n个数据 #include #define N 100 int main int i,j,n,m; int aN; scanf(%d,&n); for(j=1;j=n;j+) scanf(%d,&m); for(i=0;i=0;i-) printf(%d ,ai); printf(n); 11.二维数组 Input 多组测试数据 每组输入2个整数 n和m(不大于20) Output 输出n*m的矩阵,要求左上角元素是1,然后从左到右 从上到下依次增大 #include #define N 20 int main int m,n,i,j,aNN; while(sca

8、nf(%d%d,&m,&n)!=EOF) for(i=0;im;i+) for(j=0;jn;j+) aij=1+n*i+j; for(i=0;im;i+) for(j=0;jn;j+) printf(%d ,aij); printf(n); 12.switch语句 Description 要求根据以下函数关系,对输入的任意整数x,计算出相应的y值。要求用switch语句实现。 x的值 y的值 x0 y=0 0=x10 y=x 10=x=20 y=30 Input 输入的任意整数x Output 计算出相应的y值 #include int main int x,z; float y; scan

9、f(%d,&x); if(x=0&x=10&x=20) z=3; switch(z) case 0: y=0; break; case 1: y=x; break; case 2: y=10; break; case 3: y=30; break; printf(y=%.6fn,y); 13.函数语句 Input 多组测试数据,每组输入一个整数。 Output 当x 0时,输出函数值为1; 当x = 0时,输出函数值为0;当x 0时,输出函数值为-1。 #include main int a; int sign(int x); while(scanf(%d,&a)!=EOF) printf(%

10、dn,sign(a); int sign(int x) if(x0) return 1; 14.指针语句 Input 多组测试数据。每组测试数据输入2个整数。 Output 对于每组测试数据,从大到小输出数 #include void swap(int *p1,int *p2) int t; t=*p1; *p1=*p2; *p2=t; int main int a,b; int *pointer_1,*pointer_2; while(scanf(%d%d,&a,&b)!=EOF) pointer_1=&a; pointer_2=&b; if(a b) swap(pointer_1,poin

11、ter_2); printf(%d %dn,a,b); 15.指针与数组结合语句 Description 调用自定义后移函数move(int *a, int n, int m)来进行循环移位,对n(n20)个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数,如下: n=10, m=3时:输入:1 2 3 4 5 6 7 8 9 10,输出:8 9 10 1 2 3 4 5 6 7 Input 输入多组测试数据,每组先输入n(n 20)和m(m n),再输入n个整数。 Output 输出循环移动m个数后的序列,数据间空格隔开。 #include #define N 100 int

12、 move(int *a,int n,int m) int t; if(*am) t=*a-m; else t=n-m+*a; return t; int main int i,t,m,n,aN; while(scanf(%d%d,&n,&m)!=EOF) for(i=1;i=n;i+) scanf(%d,&ai); for(i=1;i=n;i+) printf(%d ,amove(&i,n,m); printf(n); 16.字符串的多组测试 Input 多组测试数据,每组输入一个以回车结束的字符串。 Output 将这个字符串颠倒过来输出 #include #include int mai

13、n char c80; int len, i; while(gets(c)!=NULL) len = strlen(c); for (i = len-1; i=0; i-) printf(%c, ci); printf(n); 16.待续. C程序设计若干题 001 摄氏温度转换 输入华氏温度f,输出对应的摄氏温度c,保留3位小数。 c=5/9*(f-32) Input 输入f Output 输出c #include int main float fahr, celsius; scanf(%f,&fahr); celsius = 5.0*(fahr-32)/ 9; printf(%.3fn,c

14、elsius); /输出格式为保留3位小数 return 0; 002 整除 Input 输入三个整数,分别为a,b,c Output 如果a既是b的整数倍又是c的整数倍,则输出Yes,否则输出No #include #include int main int a,b,c; scanf(%d%d%d,&a,&b,&c); if (a%b=0&a%c=0) /如果a除于b的余数和a除于c的余数都等于0 printf(Yesn); else printf(Non); 003 求正弦和余弦 Input 输入一个正整数 Output 分2行分别输出n度的正弦和余弦函数值,保留2位小数 #include

15、 #include int main int n; scanf(%d,&n); printf(%.2fn,sin(n*(atan(1.0)*4)/180); printf(%.2fn,cos(n*(atan(1.0)*4)/180); 004 求多项式 Input 输入一个整数n Output 输出1+1/+1/+.+1/(1-3+5-.+2n-1)的值,保留2位小数 #include #include int main int n,i,j; float s,m,f; scanf(%d,&n); s=0.0;m=0;f=1; for(i=1;i=n;i+) m=0;j=1;f=1; while

16、(j=2*i-1) m=m+j*f; f=-f; j=j+2; s=s+1/m; printf(%.2fn,s); 005 调用函数,输出100到200之间的所有素数 Input 无 Output 输出100与200之间的所有素数,每行输出5个数,每个数占5位。 #include int main int i,j=0,m; int prime(int x); for(i=100;i200;i+) m=prime(i); if(m!=0) printf(%5d,m); j+; if(j%5=0) printf(n); printf(n); int prime(int x) int i,s; s=

17、0; for(i=2;i=(x/2);i+) if(x%i=0) s=s+i; if(s=0)return x; elsereturn 0; 006 求方程的解 Description 求ax2+bx+c=0方程的实根。a,b,c由键盘输入. Input 输入三个数a,b,c Output 输出方程的实根,如果方程有实根,则输出根;如果方程有2个不等实根,则分2行输出,第一行输出较大根,第二行输出较小根。 其余情况则输出No #include #include int main float a,b,c,x1,x2,delt; scanf(%f%f%f,&a,&b,&c); if (a=0) i

18、f (b=0) printf(No); else x1=-c/b; printf(%.6fn,x1); else delt=b*b-4*a*c; if (deltx2) printf(%.6fn,x1); printf(%.6fn,x2); else printf(%.6fn,x2); printf(%.6fn,x1); 007 N个数找最大和最小值 Input 多组测试数据 首先输入1个整数n表示测试组数 然后每行首先输入1个整数m,再输入m个整数 Output 对于每组测试数据输出1行,内容为m个整数的最大值和最小值 #include main int n,num,max,min,i; w

19、hile(scanf(%d,&n)!=EOF) for (i=n;i0;i-) scanf(%d,&num); if (i=n) max=min=num; if (maxnum) min=num; printf(max=%d, min=%dn,max,min); 008指针:调用自定义交换函数,完成5个浮点数从小到大排列 Input 多组测试数据,每组输入5个任意浮点数。 Output 输出从小到大排列的5个数,输出一位小数,数据之间空格隔开。 #include #define N 5 void swap(float *p1,float *p2) float t; t=*p1; *p1=*p2

20、; *p2=t; int main float aN; int i,j; while(scanf(%f%f%f%f%f,&a0,&a1,&a2,&a3,&a4)!=EOF) for(i=0;i4;i+) for(j=0;jaj+1) swap(&aj,&aj+1); printf(%.1f %.1f %.1f %.1f %.1fn,a0,a1,a2,a3,a4); 009第几天 Input 输入为一行输入格式为YYYY-MM-DD Output 输出这天是这一年的第几天 #include int main int i,j,year,month,day,MONTH12=31,28,31,30,3

21、1,30,31,31,30,31,30,31,D; while(scanf(%d-%d-%d,&year,&month,&day)!=EOF) if(year%4=0&year%100!=0)|year%400=0) MONTH1=29; D=0; for(i=0;imonth-1;i+) D+=MONTHi; if(day=MONTHi) D=D+day; printf(%dn,D); else printf(Non); 010逆序输出 Input 输入一个不多于5位的正整数 Output 输出分2行,第一行是一个整数,输出是几位数,第2行逆序输出 #include int main lon

22、g int x; int a,b,c,d,e,y; scanf(%ld,&x); if(x9999) y=5; else if(x999) y=4; else if(x99) y=3; else if(x9) y=2; else y=1; printf(%dn,y); a=x/10000; b=x/1000%10; c=x/100%10; d=x/10%10; e=x%10; switch(y) case 1: printf(%dn,e);break; case 2: printf(%d%dn,e,d);break; case 3: printf(%d%d%dn,e,d,c);break; c

23、ase 4: printf(%d%d%d%dn,e,d,c,b);break; case 5: printf(%d%d%d%d%dn,e,d,c,b,a);break; 011 打印双层金字塔 Input 多个测试数据。每个测试数据输入一个整数n( 2 = n = 9) Output 输出双层金字塔。 #include int main int i,j,n; while(scanf(%d,&n)!=EOF) for(i=1;i=n;i+) for(j=1;j=n-i;j+) printf( ); for(j=1;j=2*i-1;j+) printf(*); printf(n); i=n+1;

24、for(;i2*n;i+) for(j=1;j=i-n;j+) printf( ); for(j=1;j=4*n-2*i-1;j+) printf(*); printf(n); 012删除操作 Input 输入一行以回车结束的字符串str1和一个字符串str2(少于80个字符)。 Output 输出完成删除字符串str2后的字符串。如果待删除的str2不在str1中,则不进行删除操作,输出原来的str1。 #include #include int main char str180,m,str280; int len1,len2,i,j,x,y; while(gets(str1)!=NULL)

25、 gets(str2); len1=strlen(str1); len2=strlen(str2); for (i=0;ilen1; i+) y=0; for(j=0;jlen2;j+) if(str1i=str2j) x=i;y=0; for (y=0;y=1, n=1000)。 Output 输出m-n之间的所有满足各位数字和等于它本身的数,%d 形式输出 #include int main int factorsum(int x); int n,m,i; while(scanf(%d %d,&m,&n)!=EOF) for(i=m;in;i+) if(factorsum(i)!=0) p

26、rintf(%d ,factorsum(i); printf(n); int factorsum(int x) int a,b,c,d,y; a=x/1000; b=x%1000/100; c=x%1000%100/10; d=x%1000%100%10; y=a*a*a+b*b*b+c*c*c+d*d*d; if(y=x)return x; else return 0; 014 函数调用,统计数中2的个数 Input 多组测试数据,每组输入一个整数。 Output 输出该数中2的个数。 #include main int n; int countdigit(int x); while(sca

27、nf(%d,&n)!=EOF) printf(%dn,countdigit(n); int countdigit(int x) int i=0,s,m; m=x; for(;m0;) s=m%10; m=m/10; if(s=2) i+; return i; 015数组中插入一个数 Input 多组测试,每组第一行输入一个整数n,然后是n个有序的整数 第二行输入1个整数m和1个整数K Output 将整数m插入到原数组中保持顺序是升序,然后输出2行 第一行是插入以后的数组 第二行是插入以后的数组中下标值是K的数 n m k不超过20 #include #define N 100 int mai

28、n int i=0,j=0,m,n,k,aN,bN; while(scanf(%d,&n)!=EOF) for(i=0;in;i+) scanf(%d,&ai); scanf(%d%d,&m,&k); j=0; for(i=0;in;i+) if(aim) printf(%d ,ai); bj=ai; j+; else break; printf(%d ,m); bj=m; j+; for(;in;i+) printf(%d ,ai); bj=ai; j+; printf(n); printf(%dn,bk); 016偶数排序 Input 多组测试数据,每组输入一个正整数N和N个整数,用空格分

29、隔。 Output 将这N个数中的偶数按从大到小的顺序输出 #include #define N 100 #include int main int i,j,k,n,t; int aN,bN; while(scanf(%d,&n)!=EOF) j=0; for(i=0;in;i+) scanf(%d,&ai); if(ai%2=0) bj=ai; j+; for(i=0;ij-1;i+) for(k=0;kj-i-1;k+) if (bkbk+1) t=bk; bk=bk+1; bk+1=t; for(i=0;ij;i+) printf(%d ,bi); printf(n); 017弓型矩阵

30、Input 多组测试数据 每组输入2个整数 n和m(不大于20) Output 输出n*m的弓型矩阵,要求左上角元素是1, for(i=0;im;i+) for(j=0;jn;j+) aij=1+n*i+j; for(i=0;im;i+) if(i+1)%2!=0) for(j=0;j=0;j-) printf(%2d ,aij); printf(n); 018 找出一个数组中出现次数最多的那个元素 Input 第一行输入一个整数n(不大于20) 第二行输入n个整数, Output 找出n个整数中出现次数最多的那个整数 #include #define N 20 int main int n,

31、i,j,aN,x,y,t,z; while(scanf(%d,&n)!=EOF) for(i=0;in;i+) scanf(%d,&ai); x=y=0; for(i=0;in;i+) t=ai; x=0; for(j=0;jy) y=x;z=t; printf(%dn,z); 019 指针:自定义函数sumDiff,调用它来求两个数的和、差 Input 多组测试数据,每组输入两个任意整数。 Output 输出两个数的和与差,空格隔开。 #include void sumDiff(int op1,int op2,int *pSum,int *pDiff) *pSum=op1+op2; *pDiff=op1-op2; int main int a,b,c,d; while(scanf(%d%d,&a,&b)!=EOF) sumDiff(a,b,&c,&d); printf(sum=%d diff=%dn,c,d); 020统计各种字符个数 Input 输入一行字符,以回车符结束 Output 分别输出字母、空格、数字和其它字符的个数 #include int main char m; int a=0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号