7-2.
#include <stdio.h> #include <stdlib.h> #include <math.h> void root2(double a,double b,double t) { double r1=(b+sqrt(t))/(2.0*a); double r2=(b-sqrt(t))/(2.0*a); printf("方程有两个实数根:%.2lf,%.2lf\n",r1,r2); } void root1(double a,double b) { printf("方程有一个实数根:%.2lf\n",b/(2.0*a)); } int main() { double a,b,c,t; printf("输入方程的三个参数:"); scanf("%lf%lf%lf",&a,&b,&c); t = b*b-4*a*c; if(t>0) root2(a,b,t); else if(t==0) root1(a,b); else printf("方程有两个共轭复数根\n"); return 0; }
7-3.
#include <stdio.h> #include <stdlib.h> void judge(int n) { if(n==1) printf("素数\n"); else printf("不是素数\n"); } int main() { int n,i,flag=1; printf("输入一个整数:"); scanf("%d",&n); if(n%2 == 0 || n == 1) //质数必为奇数 flag=0; else { for(i=3;i<n;i++) { if(n%i == 0) { flag=0; break; } } } judge(flag); return 0; }
7-16.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int main() { char n[4]; printf("按格式输入一个16进制数:"); gets(n); int i=0,num=0; for(;i<strlen(n);i++) { if(n[i] >= ‘A‘ && n[i] <= ‘F‘) n[i] += 10-‘A‘; //用ASCII码替代字符进行运算 else if(n[i] >= ‘a‘ && n[i] <= ‘f‘) n[i] += 10-‘a‘; else n[i] = n[i]-‘0‘; num += n[i]*pow(16,strlen(n)-i-1); //进制转换 } printf("对应的10进制数字:%d\n",num); return 0; }
7-17.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> void trans(int num,int n) { char str[n]; int i; for(i=0;i<n;i++) { str[i] = (int)(num/pow(10,n-i-1))%10 + 48; //赋值对应的ascii码 } printf("输出它的字符串:"); puts(str); putchar(‘\n‘); } int main() { int n,i=0,num; printf("输入一个非负整数:"); scanf("%d",&n); num = n; do { n /= 10; i++; //标记n的位数 } while(n>0); trans(num,i); return 0; }
7-18.
#include <stdio.h> #include <stdlib.h> int judge(int y) { if(y%4 == 0 && y%100 != 0) return 1; else if(y%400 == 0) return 1; else return 0; } int main() { int year,month,day,no,i; int arr[12]={31,28,31,30,31,30,31,31,30,31,30,31}; //平年的每月天数 printf("按格式输入日期:"); scanf("%d.%d.%d",&year,&month,&day); if(judge(year)) //先判断是不是闰年 arr[1] = 29; no = day; for(i=0;i<month-1;i++) { no += arr[i]; } printf("这是该年的第%d天\n",no); return 0; }
7-8.
#include <stdio.h> #include <stdlib.h> int main() { int n; char ch[4]; printf("输入一个四位数字:"); scanf("%d",&n); ch[0] = n/1000 + 48; ch[1] = (n/100)%10 + 48; ch[2] = (n/10)%10 + 48; ch[3] = n%10 + 48; printf("%c %c %c %c\n",ch[0],ch[1],ch[2],ch[3]); return 0; }
7-9.
#include <stdio.h> #include <stdlib.h> #include <string.h> int *tj(char c[]) { int n1=0,n2=0,n3=0,n4=0,i=0; int *p=&i; for(;i<strlen(c);i++) { if(c[i] >= ‘0‘ && c[i] <= ‘9‘) n2++; else if(c[i] >= ‘a‘ && c[i] <= ‘z‘) n1++; else if(c[i] >= ‘A‘ && c[i] <= ‘Z‘) n1++; else if(c[i] == ‘ ‘) n3++; else n4++; } *p = n1; *(p+1) = n2; *(p+2) = n3; *(p+3) = n4; return p; } int main() { char str[100]; printf("输入一个字符串:\n"); gets(str); printf("字符串:%s\n",str); printf("%d个字母,%d个数字,%d个空格,%d个其他字符\n",*tj(str),*(tj(str)+1),*(tj(str)+2),*(tj(str)+3)); return 0; }
7-10.
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char str[100]; int i,lw=0,max=0,pos; printf("输入一个字符串:\n"); gets(str); for(i=0;i<strlen(str);i++) { if(str[i] >= ‘a‘ && str[i] <= ‘z‘) lw++; else if(str[i] >= ‘A‘ && str[i] <= ‘Z‘) lw++; else lw=0; //如果单词不连续了,将标记归零 if(lw > max) { max = lw; //取最大长度 pos = i; //标记单词末尾的下标 } } printf("输出最长的单词:\n"); for(i=pos-max+1;i<pos+1;i++) { printf("%c",str[i]); } printf("\n"); return 0; }
7-13.
#include <stdio.h> #include <stdlib.h> int prd(int n,int x) { if(n==0) return 1; else if(n==1) return x; else return ((2*n-1)*x - prd(n-1,x) - (n-1)*prd(n-2,x))/n; } int main() { int n,x; printf("输入要求的阶数和参数:"); scanf("%d%d",&n,&x); printf("n阶勒让德多项式的结果为:%d\n",prd(n,x)); return 0; }
7-14.
#include <stdio.h> #include <stdlib.h> double avg(double a[]) { return (a[0]+a[1]+a[2]+a[3]+a[4])/5.0; } double subf(double a[][5]) //必须指明列数 { int i; double first=0,next=0; for(i=0;i<10;i++) { first += avg(a[i])*avg(a[i]); next += avg(a[i]); } return first/10.0-(next/10.0)*(next/10.0); } int main() { double sc[10][5],max=0; int i,j,sp,cp; printf("分别输入10个学生的5门课程成绩:\n"); for(i=0;i<10;i++) for(j=0;j<5;j++) { scanf("%lf",&sc[i][j]); } printf("10个学生的平均成绩:\n"); for(i=0;i<10;i++) { printf("%.2lf ",avg(sc[i])); } printf("\n5门课程的平均分:\n"); for(j=0;j<5;j++) { int sum=0; for(i=0;i<10;i++) sum += sc[i][j]; printf("%.2lf ",sum/10.0); } for(i=0;i<10;i++) for(j=0;j<5;j++) { if(sc[i][j] > max) { max = sc[i][j]; sp = i+1; cp = j+1; } } printf("\n最高分数对应的学生和课程序号:学生%d,课程%d\n",sp,cp); printf("平均方差为:%.2lf\n",subf(sc)); return 0; }
原文:https://www.cnblogs.com/lemon-567/p/14091583.html