1.编写一个程序,求出给定半径r的圆的面积和周长,并且输出计算结果。其中:r的值由用户输入,用浮点型数据处理。
#include void main( ) { float PI=3.1415; float r,area,perim; printf("请输入圆的半径:\n"); printf("r="); scanf("%f",&r); //输入半径r perim=2*PI*r; //周长=2πr area=PI*r*r; //面积=πr^2 printf("周长:%f\\n面积:%f\\n",perim,area); //输出周长和面积.. } 2.给一百分制成绩,要求输出成绩等级’A’、’B’、’C’、’D’、’E’。90分以上为’A’,80~分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。 #include void main() { int iNum; printf("请输入分数:"); scanf("%d", &iNum); switch (iNum / 10) { case 10: case 9 : printf("学生成绩A\\n");break; case 8 : printf("学生成绩B\\n");break; case 7 : printf("学生成绩C\\n");break; case 6 : printf("学生成绩D\\n");break; default: printf("学生成绩E\\n");break; } } 3.输入两个正整数m和n,求其最大公约数和最小公倍数。 #include int main() { int p,r,n,m,temp; printf("请输入两个正整数n,m:");//请用空格隔开 scanf("%d%d,",&n,&m); if (n temp=n; n=m; m=temp; } p=n*m; while(m!=0) { r=n%m; n=m; m=r; } printf("它们的最大公约数为:%d\\n",n); printf("它们的最小公约数为:%d\\n",p/n); return 0; } 4.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 #include #include #include int i,a[4]; char t; int main() { printf("请输入字符串"); for(i=0;;i++) { scanf("%c",&t); if(t=='\\n')break; else if(t>='A'&&t<='Z') a[0]++; else if(t>='a'&&t<='z')a[0]++; else if(t==' ')a[1]++; else if(t>='0'&&t<='9')a[2]++; else a[3]++; } for(i=0;i<4;i++) { if(i==0) printf("字母的个数是"); else if(i==1) printf("空格的个数是"); else if(i==2) printf("数字的个数是"); else if(i==3) printf("其它字符的个数是"); printf("%d\\n",a[i]); } system("pause"); return 0; } 5.求sn=a+aa+aaa+…+aa...a(n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),n由键盘输入。 #include int main(void) { int sum = 0; int sun = 0; int a; int n; int i = 0; printf("请入入a值(整数):\\n"); printf("a = "); scanf("%d", &a); printf("请入入n值:\\n"); printf("n = "); scanf("%d", &n); while (i sum = a + sum * 10; sun += sum; ++i; } printf("sun = %d \\n", sun ); return 0; } 第二次试验 1.有一分数序列:求出这个数列的前20项之和。 #include main() { int i,x,y,a; float sum=0; x=2; y=1; for(i=1;i<20;i++) { sum+=(float)(x)/y; // printf("%d/%d\\n",x,y); a=x; x=x+y; y=a; } printf("%7.5f\\n",sum); } 2.求一个33矩阵对角线元素之和。 #include void main() { int a[3][3]; int i,j; int sum=0; int sum1=0; // input for( i=0; i<=2; i++) { for( j=0; j<=2; j++) { printf ("a[%d][%d]:", i+1, j+1); scanf ("%d",&a[i][j]); } printf("\\n"); } // sum for( i=0; i<=2; i++) { for( j=0; j<=2; j++) { if(i==j) sum = sum+a[i][j]; if(i+j==2) sum1= sum1+a[i][j]; } } //output printf ("DuiJIao 1: %d\\n",sum); printf("DuiJIao 2: %d\\n",sum1); //output matrix printf("\\n"); for( i=0; i<=2; i++) { for( j=0; j<=2; j++) { printf("%d ",a[i][j]); } printf("\\n"); } } 依次输入9个数 输出两对角线和 3.将一个数组中的值按逆序重新存放,例如原来的顺序为:8,6,5,4,1。要求改为:1,4,5,6,8。 #include void main() { int i,b[10]; for(i=0;i<10;i++) scanf("%d ", &b[i]); for(i=9;i>-1;i--) printf("%5d", b[i]); printf("\\n"); } 4.有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格、以及其他字符的个数。 #include int main() {int i,j,upp,low,dig,spa,oth; char text[3][80]; upp=low=dig=spa=oth=0; for (i=0;i<3;i++) { printf("please input line %d:\\n",i+1); gets(text[i]); for (j=0;j<80 && text[i][j]!='\\0';j++) {if (text[i][j]>='A'&& text[i][j]<='Z') upp++; else if (text[i][j]>='a' && text[i][j]<='z') low++; else if (text[i][j]>='0' && text[i][j]<='9') dig++; else if (text[i][j]==' ') spa++; else oth++; } } printf("\\nupper case: %d\\n",upp); printf("lower case: %d\\n",low); printf("digit : %d\\n",dig); printf("space : %d\\n",spa); printf("other : %d\\n",oth); return 0; } 第三次实验 1.将字符串computer赋给一个字符数组,然后从第一个字母开始输出该串。请用指针实现。 #include #include #define MAX_LENGTH 32 int main() { char str[MAX_LENGTH] = {0}; char *pStr = (char*)&str; //1. 将字符串computer赋给一个字符数组 strcpy(str, "computer"); //2. 然后从第一个字母开始间隔地输出该串 while(*pStr != '\\0' ) { printf("%c\\n", *pStr); pStr++; } return 1; } 2.将无符号八进制数字字符串转换为十进制整数。例如,输入的字符串为556,则输出十进制整数366。用指针实现。 #include void main() { char *p, s[6]; int n=0; p=s; gets(p); while(*p!='\\0') {n=n*8; n=n+(*p-'0'); p++; } printf("%d \\n",n); } 3.编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数,用指针实现。 #include #include #include int main() { char str[100]; int num1,num2,num3,num4; num1=num2=num3=num4=0; gets(str); for(int i=0;i if(islower(str[i])) num1++; else if(isupper(str[i])) num2++; else if(isdigit(str[i])) num3++; else if(str[i]==' ') num4++; } printf("小写字母:%d\\n",num1); printf("大写字母:%d\\n",num2); printf("数字:%d\\n",num3); printf("空格:%d\\n",num4); return 0; } 第四次实验 1.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。 #include #include int prime(int x) { int temp,i,k; temp=(int)(sqrt(x)); for(i=2;i<=temp;++i) if(x%i==0) { k=0; break; } if(i>temp) k=1; return k; } void main() { int x; int k; scanf("%d",&x); k=prime(x); if(k) printf("%d is prime\\n",x); else printf("%d is not prime\\n",x); } 2.写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。 # include #include char *fanxu(char str1[100]) //返回类型 { int i,j,t; char str2[100]; strcpy(str2,str1); t=strlen(str1); for(i=0,j=t-1;j>-1;i++,j--) str1[i]=str2[j]; return str2; } int main(int argc, char* argv[]) { char str0[100]; gets(str0); fanxu(str0); puts(str0); return 0; } 3.写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串及输出上述的结果。 #include #include int alph,digit,space,others; void count(char str[]); void main(void) { char text[80]; printf("\\n输入字符串:\\n"); gets(text); printf("字符串是:"); puts(text); strcat(text,"\\n"); alph=0; digit=0; space=0; others=0; count(text); printf("\\n%d字母,%d数字,%d空格,%d其它字符\\n",alph,digit,space,others); } void count(char str[]) { int i; for(i=0;str[i]!='\\n';i++) { if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) alph++; else if(str[i]>='0'&&str[i]<='9') digit++; else if(str[i]==' ') space++; else others++; } } 4.写一函数,使给定的一个二维数组(3×3)转置,即行列互换。 #include void x(int a[3][3])//x是行列互换的函数名 { int i,j; printf("行列互换后:\\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("%d\",a[j][i]); } printf("\\n"); } } void main() { int sum[3][3],i,j; printf("请输入3*3的矩阵数:"); for(i=0;i<3;i++) { for(j=0;j<3;j++) { scanf("%d",&sum[i][j]); } } x(sum); }