

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