1、利用筛法求指定范围之内的素数
【问题描述】:
使用筛法求指定范围[1,n]之间的素数。输出时每行显示10个数据。(每行最后一个数据后不输出空格)
n为正整数,且0<n<=1000.
【输入形式】:一个正整数:n
【输出形式】:一行输出10个数,中间空格隔开,每行最后一个数据后不输出空格
【样例输入】:100
【样例输出】:
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
int i,j,n,m=0;
int a[1000];
scanf("%d",&n);
for(i=2;i<=n;i++)
{
a[i]=0;
}
for(i=2;i<=n;i++)
{
for(j=2;j<=(int)sqrt((double)i+1);j++)
{
if(i%j==0)
{
a[i]=1;
}
}
}
for(i=2;i<=n;i++)
{
if(a[i]==0)
{
printf("%d ",i);
m++;
if(m%10==0)
{
printf("\n");
}
}
}
printf("\n");
return 0;
}
2、学生成绩统计与分析
【问题描述】:从键盘输入一个班(全班最多不超过30人)学生某课程的成绩,当输入成绩为负值或超出规定人数时,输入结束,分别实现下列功能: (1)输出各分数段的学生人数及所占的百分比,并打印不及格学生名单; (2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生名单;
【输入形式】:依次输入各个学生的分数,当输入负数或超过30人时结束
【输出形式】:
输出不及格学生名单
输出高于平均分学生名单
输出高于平均分的学生人数
输出各个分数段的学生人数及所占比例
注意:所有实数保留小数点后两位数,即以%.2f格式输出
【样例输入】:
10 20 30 40 50 60 70 80 90 100 100 99 98 76 79.6 54.3 67.9 12.4 56.0 65.9 78.1 -1
【样例输出】:
<60:
student1,10.00
student2,20.00
student3,30.00
student4,40.00
student5,50.00
student16,54.30
student18,12.40
student19,56.00
higher than average:
student7,70.00
student8,80.00
student9,90.00
student10,100.00
student11,100.00
student12,99.00
student13,98.00
student14,76.00
student15,79.60
student17,67.90
student20,65.90
student21,78.10
higher than average:12
[0,60):8,percentage:38.10%
[60,70):3,percentage:14.29%
[70,80):4,percentage:19.05%
[80,90):1,percentage:4.76%
[90,100):3,percentage:14.29%
100:2,percentage:9.52%
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
int high[30],low[30];
int n=0,i,a=0,b=0,c=0,d=0,e=0,f=0,s=0,x=0,y=0;
double score[30],aver,sum=0;
while(1)
{
scanf("%lf",&score[n]);
if(score[n]<0||n>30)
{
break;
}
sum+=score[n];
n++;
}
aver=sum/n;
for(i=0;i<n;i++)
{
if(score[i]>=aver)
{
high[s]=i;
s++;
}
if(score[i]<60)
{
low[a]=i;
a++;
}
else if(score[i]<70)
{
b++;
}
else if(score[i]<80)
{
c++;
}
else if(score[i]<90)
{
d++;
}
else if(score[i]<100)
{
e++;
}
else
{
f++;
}
}
printf("<60:\n");
for(i=0;i<a;i++)
{
x=low[i];
printf("student%d,%.2f\n",low[i]+1,score[x]);
}
printf("higher than average:\n");
for(i=0;i<s;i++)
{
y=high[i];
printf("student%d,%.2f\n",high[i]+1,score[y]);
}
printf("higher than average:%d\n",i);
printf("[0,60):%d,percentage:%.2f%%\n",a,a*100.0/n);
printf("[60,70):%d,percentage:%.2f%%\n",b,b*100.0/n);
printf("[70,80):%d,percentage:%.2f%%\n",c,c*100.0/n);
printf("[80,90):%d,percentage:%.2f%%\n",d,d*100.0/n);
printf("[90,100):%d,percentage:%.2f%%\n",e,e*100.0/n);
printf("100:%d,percentage:%.2f%%\n",f,f*100.0/n);
return 0;
}
3、判断一个字符串在另一个字符串中是否出现
【问题描述】:数组str1存放母串,str2存放子串,子串与母串中的字符逐个比较,相同则比较下一个字符;不同,则子串重新从第一个字符、母串从下一个字符开始比较。
当子串遍历完,即到串尾,则意味着在母串找到了子串;否则,则未找到子串。
【输入形式】:分别输入母串和子串(注意:长度不能超过100)
【输出形式】:若查找成功输出“Found!”,否则输出“Not found!”
【样例输入】:
are you ok?
ok?
【样例输出】Found!
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{
char str1[100],str2[100];
int i=0,j=0;
fgets(str1,100,stdin);
fgets(str2,100,stdin);
while(str1[i]!='\0'&&str2[j]!='\0')
{
if(str1[i]==str2[j])
{
i++;
j++;
}
else
{
i=i-j+1;
j=0;
}
}
if(str2[j]=='\0')
{
printf("Found!\n");
}
else
{
printf("Not found!\n");
}
return 0;
}
4、验证魔方阵
【问题描述】
在下面的5X5魔方矩阵中,每一行、每一列及对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二维数组中,然后验证其是否为魔方矩阵,并将其按如下格式显示在屏幕上(见题目描述)
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
[提示] 定义一个含有12个元素的数组,存放各行、各列及对角线的元素之和。
【输入形式】矩阵中各元素的值
【输出形式】
这个矩阵是或者不是魔方矩阵(is or is not)
输出该魔方矩阵(元素以%-6d格式输出)
【样例输入】
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
【样例输出】
The array is a magic square.
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
int a[5][5];
int i,j,s1=0,s2=0,s3=0,s4=0;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
s1+=a[i][j];
s2+=a[j][i];
s3+=a[i][i];
if(i+j==4)
{
s4+=a[i][j];
}
}
if(s1!=s2)
{
printf("The array is not a magic square.\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%-6d",a[i][j]);
}
printf("\n");
}
return 0;
}
}
if(s1!=s2&&s3!=s4)
{
printf("The array is not a magic square.\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%-6d",a[i][j]);
}
printf("\n");
}
}
else
{
printf("The array is a magic square.\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%-6d",a[i][j]);
}
printf("\n");
}
}
return 0;
}