收藏 分销(赏)

2023年天津工业大学计算机专业C语言经典笔记.doc

上传人:二*** 文档编号:4515370 上传时间:2024-09-26 格式:DOC 页数:18 大小:63.04KB 下载积分:5 金币
下载 相关 举报
2023年天津工业大学计算机专业C语言经典笔记.doc_第1页
第1页 / 共18页
本文档共18页,全文阅读请下载到手机保存,查看更方便
资源描述
天津工业大学计算机专业C语言经典笔记 1. 将一个二维数组的行和列的元素互换存到另一个数组里。 #include <stdio.h> main() { int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; printf("array a:\n"); for(i=0;i<=1;i++) { for(j=0;j<=2;j++) { printf("%5d",a[i][j]); b[j][i]=a[i][j]; } printf("\n"); } printf("array b:\n"); for(i=0;i<=2;i++) { for(j=0;j<=1;j++) printf("%5d",b[i][j]); printf("\n"); } } 2. 运用冒泡法对输入的10整数进行从小到大排序。 #include <stdio.h> main() { int a[10]; int i,j,t; printf("input numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } printf("the sorted numbers:\n"); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); } 3. 运用数组来解决求Fibonaai数列问题。 #include <stdio.h> main() { int i; int f[20]={1,1}; for(i=2;i<20;i++) f[i]=f[i-1]+f[i-2]; for(i=0;i<20;i++) { if(i%5==0) printf("\n"); printf("%12d",f[i]); } printf("\n"); } 4. 求100-999之间的水仙花数。 #include <stdio.h> main() { int i,k,m,n; for(i=100;i<1000;i++) { k=i%10; m=i/10%10; n=i/10/10; if(i==k*k*k+m*m*m+n*n*n) printf("%d\n",i); } } 5. 求二维数组的最大值。 #include <stdio.h> main() { int a[4][4]; int i,j; int max(int a[4][4]); for(i=0;i<4;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); printf("max=%d\n",max(a)); } int max(int a[4][4]) { int i,j,b; b=a[0][0]; for(i=0;i<4;i++) for(j=0;j<4;j++) if(a[i][j]>b) b=a[i][j]; return b; } 6. 求字符串逆序。 #include <stdio.h> main() { int i,n; char s[80],temp; scanf("%s",s); n=strlen(s); for(i=0;i<n/2;i++) { temp=s[i];s[i]=s[n-1-i];s[n-1-i]=temp; } printf("%s\n",s); } 7. 求字符串长度。 #include <stdio.h> main() { char s[80]; int str(char *s); scanf("%s",s); printf("ths string number is:%d\n",str(s)); } int str(char *s) { int i; for(i=0;s[i]!='\0';i++); return i; } 8. 写一函数,将两个字符串连接。 #include <stdio.h> void fun(char s[],char t[]) { int i=0,j=0; while(s[i]) i++; while(t[j]) { s[i]=t[j];i++;j++; } s[i]='\0'; } main() { char s[80],t[80]; gets(s); gets(t); fun(s,t); printf("%s\n",s); } 9. 求同时能被2、3、5、7整除的数(1-500)。 #include <stdio.h> main() { int i; for(i=1;i<=500;i++) if(i%2==0&&i%3==0&&i%5==0&&i%7==0) printf("%d\n",i); } 10. 求3-100的素数。 #include <stdio.h> main() { int i,j,w; for(i=3;i<=100;i++) { w=0;j=2; do { if(i%j==0) w=1; j++; } while(j<i&&w==0); if(w==0) printf("%3d",i); } printf("\n"); } 11. 回文数问题。 #include <stdio.h> int fun(int n) { int n1,n2; n1=n;n2=0; while(n!=0) { n2=n2*10+n%10; n/=10; } if(n1==n2) return 1; return 0; } main() { int num; scanf("%d",&num); if(fun(num)) printf("yes\n"); else printf("no\n"); } 12. 判断一个字符串是否为回文。 #include <stdio.h> #include <string.h> main() { int func(char s[]); char str[100]; gets(str); if(func(str)==1) printf("yes!\n"); else printf("no!\n"); } int func(char s[]) { int l,i; l=strlen(s); for(i=0;i<l/2;i++) if(s[i]!=s[l-i-1]) return 0; return 1; } 13. 将字符串中的小写英文字母转换为大写英文字母。 #include <stdio.h> char *p(char *s) { int i; for(i=0;s[i]!='\0';i++) if(s[i]>='a'&&s[i]<='z') s[i]-=32; return s; } main() { char s[100]; gets(s); puts(p(s)); } 14. 一维数组有10个元素,将其逆序存放。 #include <stdio.h> main() { int a[10]={1,2,3,4,5,6,7,8,9,10},i,t; for(i=0;i<5;i++) { t=a[i];a[i]=a[10-i-1];a[10-i-1]=t; } for(i=0;i<10;i++) printf("a[%d]=%d\n",i,a[i]); } 15. 输入两个整数m和n,求其最大公约数和最小公倍数。 #include <stdio.h> main() { int m,n,p,r,t; scanf("%d%d",&m,&n); if(m>n) { t=m;m=n;n=t; } p=m*n; while(m!=0) { r=n%m; n=m; m=r; } printf("%d,%d\n",n,p/n); } 16. 用/4≈1-1/3+1/5-1/7+…公式求的近似值直到最后一项的绝对值小于10-6为止。 #include <stdio.h> #include <math.h> main() { int i=1,j=1; float pi=0; while(fabs(1.0/i*j)>=0.000001) { pi+=1.0/i*j; i+=2; j=-j; } pi*=4; printf("pi=%f\n",pi); } 17. 以下程序的功能是:求斐波那契数列的:1,1,2,3,5,8,………的前40个数,即 F1=1 (n=1) F2=1 (n=2) Fn=Fn-1+Fn-2 (n>=3) #include <stdio.h> main() { int i; long f1=1,f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld ",f1,f2); if(i%2==1) printf("\n"); f1=f1+f2; f2=f2+f1; } } 18. 求1!+2!+3!+4!+……20! #include <stdio.h> main() { int i; float t=1,s=0; for(i=1;i<=20;i++) { t*=i; s+=t; } printf("%f\n",s); } 19. 以下程序的功能是:输出以下图案 * *** ***** ******* ***** *** * #include <stdio.h> main() { int i,j,k; for(i=1;i<=4;i++) { for(j=1;j<=4-i;j++) printf(" "); for(k=1;k<=2*i-1;k++) printf("*"); printf("\n"); } for(i=3;i>=1;i--) { for(j=1;j<=4-i;j++) printf(" "); for(k=1;k<=2*i-1;k++) printf("*"); printf("\n"); } } 20. 求一个3×3的整型矩阵对角线之和 #include <stdio.h> main() { int a[3][3],i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) sum=sum+a[i][i]; printf("%d\n",sum); } 21. 输出以下的杨辉三角的前10行 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 …………………………… ……………………………… #include <stdio.h> main() { int a[10][10],i,j,t; for(i=0;i<10;i++) { a[i][0]=1;a[i][i]=1; } for(i=2;i<10;i++) for(j=1;j<i;j++) a[i][j]=a[i-1][j]+a[i-1][j-1]; for(i=0;i<10;i++) { for(j=0;j<=i;j++) printf("%4d",a[i][j]); printf("\n"); } } 22. 写一个判断素数的函数,在主函数中输入一个整数,输出是否是素数的信息。 #include <stdio.h> int fun(int x) { int i,t=1; for(i=2;i<x;i++) if(x%i==0) t=0; return t; } main() { int x; scanf("%d",&x); if(fun(x)) printf("Yes\n"); else printf("No\n"); } 23. 写一函数,使给定的一个二维整型数组数组(3×3)转置,即行列互换 #include <stdio.h> void fun(int a[3][3]) { int i,j,t; for(i=0;i<3;i++) for(j=0;j<i;j++) { t=a[i][j];a[i][j]=a[j][i];a[j][i]=t; } } main() { int a[3][3]={1,2,3,4,5,6,7,8,9},i,j; fun(a); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%3d",a[i][j]); printf("\n"); } } 24. 运用递归方法求数组的最大值 int fun(int a[],int n) { int max; if(n==1) max=a[0]; else max=fun(a,n-1); if(max<a[n-1]) max=a[n-1]; return max; } main() { int a[]={1,2,3,4,5}; printf("%d\n",fun(a,5)); } 25. 用递归法求m! #include <stdio.h> long f(int m) { return m==0?1:m*f(m-1); } main() { int m; scanf("%d",&m); printf("%ld\n",f(m)); } 26. 写出程序的运营结果。 #include <stdio.h> main() { int t,x,y,z; x=y=z=1; t=++x||++y||++z; printf("%d,%d,%d,%d\n",x,y,z,t); } 答案:2,1,1,1 27. 写出程序的运营结果。 #include <stdio.h> int m=3; int f(int x,int y) { int m=27; return (x*y-m); } main() { int a=7,b=5; printf("%d\n",f(a,b)/m); } 答案:2 28. 写出程序的运营结果。 #include <stdio.h> main() { int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int i,(*b)[4]; for(i=0;i<2;i++) { b=a+i; printf("%d",*(b[i]+1)); } printf("\n"); } 答案:210 29. 写出程序的运营结果。 #include <stdio.h> main() { int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},i,j; int (*p)[4]=a; for(i=0;i<3;i++,p++) for(j=0;j<4;j++) printf("%d",*(*p+j)); printf("\n"); } 答案:112 30. 写出程序的运营结果。 a b c \0 d e f g h i j \0 d e f g h i j \0 h i j \0 main() s-> { char *s="abc",*t="defghij"; strcpy(s,t); printf("%s\n",t); } 答案:hij t-> 注:此题属于变量连续的存储空间。 31. 下列给定表达式与(m)?a++:b++等价的是 A. m==0?a++:b++ B. m==1?a++:b++ C. m!=0?a++:b++ D. m!=1?a++:b++ 答案:C 32. 下列不是死循环的是 A. i=100; while(1) { i=i%100; i++; if(i>100) break; } B. for(;;); C. int k=32764; do { k++;k++; } while(k<0); D. int s=32764; while((s++%2)||(s%2) s++; 答案: C 33. 在C语言中,若有以下语句: char b[5],*p=b; 对的的赋值语句是 A. b="abcd"; B. *b="abcd"; C. p="abcd"; D. *p="abcd"; 答案:C 34. 在C语言中,若有以下语句: struct st { int n; struct st *next; }; struct st a[3]={5,&a[1],7,&a[2],9,’\0’},*p; p=&a[0]; 则表达式值为6的是 A. p++->n B. p->n++ C. (*p).n++ D. ++(p->n) 答案:D 35. 在不同函数中可以使用的相同的变量(√)。 36. 形参为局部变量(√)。 37. 一个函数内定义的变量,只在函数内有效(√)。 38. 一个函数内的复合语句中定义的变量在本函数内有效(×)。 注:只是在复合语句内部有效。 39. char str[]="abc",*p=str;则p和str是完全相同两个指针变量(×)。 注:p指针名,str是数组名 40. 被调用函数结束后系统回收函数中所有变量占据的内存空间(×)。 注:不回收函数有效的静态变量的内存空间
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服