这个是作者整理的c语言练习题,题目的答案由作者编写,所以写的一定不怎么地,希望大家理解
1,九九乘法表,i控制行,j控制列
#include <stdio.h>
int main() {
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
if(j>i)
printf("%d*%d=%2d ",i,j,i*j);
}
printf("\n");
}
return 0;
}
2,斐波那契数列(兔子数列)
#include <stdio.h>
main(void)
{
long a = 1;
long b = 1;
long c;
int i,n;
printf("请输入一个正整数,我们会输出该数加2项的斐波那契数列的值");
scanf("%d",&n);
while(1)
{
c = b;
b = a + b;
a = c;
i++;
if (i > n) break;
}
printf("%d", a);
return 0;
}
3,判断101到200之间有多少个素数,并输出所有素数及素数的个数
#include <math.h>
#include <stdio.h>
int main(void){
int m,i,k,h=0,leap = 1;
printf("\n");
for(m = 101;m<=200;m++){
k = sqrt(m+1);
for(i = 2;i <= k;i++)
if(m%i==0){
leap = 0;break;
}
if(leap){
printf("%-4d", m);
h++;
if(h%10 == 0)
printf("\n");
}
leap = 1;
}
printf("The total is %d",h);
}
4,一个数恰好等于它的因子之和,我们称这个数为完数,如6=1+2+3。请使用编程手段找出1000以内的所有完数。
#include <stdio.h>
int main(void)
{
int a;
int i = 1;
while(a < 1000)
{
a = i +i*(i-1)/2;
i++;
printf("%d\n",a);
}
return 0;
}
5,编程打印杨辉直角三角形(请百度直角杨辉三角)
#include<stdio.h>
int main()
{
int n;
printf("输入行数:");
while(scanf("%d",&n)!=EOF)
{
int a[31][31];
int i,j,k;
for(i=1;i<=30;i++)
a[i][1]=a[i][i]=1;
if(n==1)printf("1\n");
if(n>=2)printf("1\n1 1\n");
for(i=3;i<=n;i++)
{
printf("1 ");
for(j=2;j<i;j++)
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
printf("%d ",a[i][j]);
}
printf("%d\n",a[i][i]);
}
printf("\n");
}
}
6,通过键盘输入3名学生4门课程的成绩,分别求每个学生的平均成绩和每门课程的平均成绩。要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。
#include <stdio.h>
int sum=0;
double number(int a[100][100],int x){
int data=0;
int y=x-1;
for (int i = 0; i < 100; ++i) {
for (int j = 0; j < 100; ++j) {
data=data+a[i][j];
}
}
return (double)data/y;
}
void math(int a[100][100],double b[100],int s,int temp) {
int h = 0;
printf(" 课程:");
for (; h < 100; h++) {
if (a[h][0] != 0) {
for (int m = 0; m < 100; m++) {
if (a[h][m] != 0) {
}
if (a[h][m] == 0 && a[h][m + 1] == 0) {
for (int i = 0; i < m; ++i) {
printf("第%d门课 ",i+1);
}
break;
}
}
goto loop;
}
}
loop:printf("个人均值");
printf("\n");
int i = 0;
for (; i < 100; i++) {
if (a[i][0] != 0) {
printf("第%d个人成绩:",i+1);
for (int m = 0; m < 100; m++) {
if (a[i][m] != 0) {
printf("%d ", a[i][m]);
}
if (a[i][m] == 0 && a[i][m + 1] == 0) {
sum=sum+m;
printf("%.2f ", b[i]);
printf("\n");
break;
}
}
}
}
int data1 = 0;
int fin=s+1;
float dataint[100] = {0};
for (int m = 0; m < 100; ++m) {
for (int j = 0; j < 100; ++j) {
data1=data1+a[j][m];
}
dataint[m]=(double)data1/fin;
data1=0;
}
printf(" 科目均值为:");
for (int i = 0; i < 100; ++i) {
if (dataint[i] != 0.00) {
printf("%.2f ",dataint[i]);
}
if (dataint[i] == 0.00 && dataint[i+1] == 0.00) {
printf("%.2f (总均值)\n", number(a,sum+1));
break;
}
}
}
double county(int a[100][100],int num,int temp){
float result;
int n=temp+1;
int data=0;
for (; temp !=-1; temp--) {
data=data+a[num][temp];
}
result=(double)data/n;
return result;
}
int main(){
int arr[100][100] = {0};
double cout[100] = {0.0};
float data;
int numdoll = 0;
int temp=0;
for(int i = 0 ; i<5;i++) {
sum=0;
temp=0;
printf("请输入数字:");
while (scanf("%d", &arr[numdoll][temp]) != EOF && getchar() != '\n') //循环读入多组整型数据,都以空格分隔。
temp++;
data=county(arr,numdoll,temp);
cout[numdoll]=data;
math(arr,cout,numdoll,temp);
numdoll++;
}
return 0;
}
Comments | 8 条评论
博主 Euler
催更催更
博主 喜欢摸鱼真君
@Euler 今天太忙了,我把题目先写上
博主 xf
@喜欢摸鱼真君 今天咋又摸鱼了
博主 λAIRλ
@喜欢摸鱼真君 期待大佬能完成第六个!!!
博主 xf
第六个简单写了一下,帮你写出来了,说实话,不用二维数组代码会更长,强制一维会把人写死
博主 xf
没学过一天C语言,代码垃圾,见谅!
博主 苏风
懒逼周某,最近都不更新题了
博主 2849115967
@苏风 禁止自娱自乐[doge].