C language summary chapter exercises (50)

1.输入十个数,输出十个数
#include<iostream.h>
void main()
{
int i,x;
for(x=1;x<=10;x++)
{cin>>i;
  cout<<i<<endl;
}}
2.一维问题
#include<stdio.h>
void main()
{int a[5];
int i;
for(i=1;i<=5;i++)
{scanf("%d",&a[i]);
printf("%3d",a[i]);
}}
3.输出1,4,9,16,25,36,49,64,81,100
#include<stdio.h>
void main()
{
int a[10];
int i;
for(i=1;i<=10;i++)
{
a[i]=i*i;
printf("%4d",a[i]);
}}
4.输入十个数,求和and最小数
#include<stdio.h>
void main()
{
int a[10],i,s,k;
for(i=0;i<=9;i++)
{scanf("%d",&a[i]);}
s=a[0];
k=0;
for(i=1;i<=9;i++)
{s=s+a[i];
if(a[i]<a[k])
{k=i;}
printf("s=%d\n,a[k]=%d\n",s,a[k]);
}
5. *将一个字符串逆序存放
#include<stdio.h>
#include<string.h>
void main(){
	char s[20],t;
	int i,j;
	gets(s);
	for(i=0;j=strlen(s)-1;i<j;i++;j--)
	{t=s[i];s[i]=s[j];s[j]=t;}
puts(s);
}
6.输入五个数,逆序输出;
#include<stdio.h>
void main()
{
int i,a[5],k;
for(i=0;i<=4;i++)
  {scanf("%d",&a[i]);}
  for(i=0;i<5/2;i++)
{ k=a[i];a[i]=a[4-i];a[4-i]=k;}
  for(i=0;i<=4;i++)
  {printf("%d\n",a[i]);}
}
7.输入n个数,逆序输出;
#include<stdio.h>
#define n 5
void main()
{
int i,a[n],k;
for(i=0;i<=n-1;i++)
  {scanf("%d",&a[i]);}
  for(i=0;i<n/2;i++)
{  k=a[i];a[i]=a[n-1-i];a[n-1-i]=k;
  }
  for(i=0;i<=n-1;i++)
  {printf("%d\n",a[i]);}}
8.(二维)两行三列 输出 012                   234
#include<stdio.h>
void main()
{
int i,j,a[2][3];
for(i=0;i<=1;i++)
{for(j=0;j<=2;j++)
 {a[i][j]=2*i+j;
 printf("%4d",a[i][j]);
 }
 printf("\n");
// printf("%d\n"); %d的作用是输出数,没有数时用0代替;
} }
9.输入1,2,3,4,5,6,;
 输出1 2 3
     4 5 6
#include<stdio.h>
void main()
{int i,j,a[2][3]={1,2,3,4,5,6};
  for(i=0;i<=1;i++)
  {for(j=0;j<=2;j++)
	{printf("%4d",a[i][j]);}
  printf("\n");
  } }
10.四行三列 (1)
#include<stdio.h>
void main()
{int i,j,a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
  for(i=0;i<=3;i++)
  { for(j=0;j<=2;j++)
	{printf("%4d",a[i][j]);}
  printf("\n");
  } }
11.四行三列 (2)
#include<stdio.h>
void main()
{int i,j,a[4][3];//i=行;j=列
  for(i=0;i<=3;i++)
  {for(j=0;j<=2;j++)
	{a[i][j]=3*i+j;
    printf("%4d",a[i][j]);}
  printf("\n");
  } }
12.求四行三列的最小值以及他的行和列
#include<stdio.h>
void main()
{int i,j,a[4][3]={{2,6,9},{-8,9,12},{5,-1,0},{8,6,23}},min,x,y;
    min=a[0][0];
	for(i=0;i<=3;i++)
    for(j=0;j<=2;j++)
  if(a[i][j]<min)
  { min=a[i][j];
  x=i;y=j;}
  printf("min=%d\n",min); 
printf("hang=%d\nlie=%d\n",x,y); 
}9.输入十个数,输出其中负数和正数的数量;
#include<stdio.h>
void main()
{int a[10],i,x=0,y=0,z;
  for(i=0;i<=9;i++)
  {scanf("%d",&a[i]); 
     if(a[i]<0)
	   x=x+1;
     if(a[i]==0)
	 y=y+1;   }
z=10-x-y;
 printf("正数%d\n",z);
 printf("负数%d\n",x);
printf("0:`%d\n",y);
}
10.同上 {(if;else if)比双if好,因为双if执行两次}
#include<stdio.h>
void main()
{int a[10],i,x=0,y=0,z=0;
  for(i=0;i<=9;i++)
  {scanf("%d",&a[i]); 
     if(a[i]<0)
	 x=x+1;
     else if(a[i]==0)
	 y=y+1;   
     else
    	 z=z+1;   }
 printf("正数%d\n",z);
 printf("负数%d\n",x);
printf("0:`%d\n",y);
}
11.Fibonacci数的前二十项
#include<stdio.h>
void main()
{int i,f1=1,f2=1;
  for(i=0;i<20/2;i++)
  {printf("%6d%6d",f1,f2);
    f1=f1+f2;
	f2=f2+f1;	
  }    }
12.Fibonacci数的前二十项 用一维数组表示
#include<stdio.h>
void main()
{int i,a[20];
printf("%d\n",1);
printf("%d\n",1);
a[0]=1;
a[1]=1;
  for(i=2;i<20;i++)
  {a[i]=a[i-1]+a[i-2];
  printf("%d\n",a[i]);
  }    }
13.有个排好序的数组,从键盘输入一个数,使得数组依然有序。2 5 8 9 13  
#include<stdio.h>
void main()
{int a[6]=[2,5,8,9,12],i,j,x;
scanf("%d",&x);
   for(i=0;i<=4;i++)
   if(x<a[i])
	   break;
   if(i>4)
	 a[5]=x;
   else
  {
    for(j=4;j>=i;j--)	
     a[j+1]=a[j];
     a[i]=x;
   }
 for(i=0;i<=5;i++)
 printf("%3d",a[i]);
printf("\n");
}14.定义一个五位的一维数组,从键盘输入并输出
#include<stdio.h>
void main()
{int i,a[5];
for(i=0;i<=4;i++)
{scanf("%d",&a[i]);
printf("%3d",a[i]);
}    }
15.
#include<stdio.h>
void main()
{float i,j;
int a[4][3];
  for(i=0;i<=3;i++)
  { for(j=0;j<=2;j++)
  {scanf("%d",&a[i][j]);
    printf("%3d",a[i][j]);}
  printf("\n"); }
}   
16.二维数组的初始化
#include<stdio.h>
void main()
{ int a[2][3]={1,2,3,8,9,6},i,j;
   for(i=0;i<=1;i++)
    {	for(j=0;j<=2;j++)
	{  printf("%4d",a[i][j]);}
	printf("\n");
     }}
17.此二维数组的初始化结果为{1,0,0},{8,9,0}
#include<stdio.h>
void main()
{int a[2][3]={{1},{8,9}},i,j;
    for(i=0;i<=1;i++)
	{	for(j=0;j<=2;j++)
	{  printf("%4d",a[i][j]);}
	printf("\n");
	}}
18.输出{1,2,3},{4,5,6}
#include<stdio.h>
void main()
{
	int a[2][3],i,j,k=1;
	for(i=0;i<=1;i++)
       	for(j=0;j<=2;j++)
		{a[i][j]=k;k++;
		}
    for(i=0;i<=1;i++)
	{	for(j=0;j<=2;j++)
	{  printf("%4d",a[i][j]);}
	printf("\n");
	}}
19.定义一个从键盘输入
#include<stdio.h>
void main()
{
	int a[2][3],i,j,k=1;
	for(i=0;i<=1;i++)
       	for(j=0;j<=2;j++)
	scanf("%d",&a[i][j]);
    for(i=0;i<=1;i++)
	{	for(j=0;j<=2;j++)
	{  printf("%4d",a[i][j]);}
	printf("\n");
	}}
20.求一个3*3的图形的主对角线之和and副斜线之和
#include<stdio.h>
void main()
{int a[3][3]={1,2,3,4,5,6,7,8,9},i,j,k1=0,k2=0;
     for(i=0;i<=2;i++)
	 { 	for(j=0;j<=2;j++)
 {  printf("%4d",a[i][j]);}
	  printf("\n"); }
    for(i=0;i<=2;i++)
	{	for(j=0;j<=2;j++)
	{  if(i==j)
	   k1=k1+a[i][j];
	}}
	 for(i=0;i<=2;i++)
	{	for(j=0;j<=2;j++){ 
      if(i==2-j)
      k2=k2+a[i][j];
	}}
printf("主斜线%4d",k1);
printf("副斜线%4d",k2);
}
21.求一个3*3数列斜线上数字之和
#include<stdio.h>
void main()
{int a[3][3]={1,2,3,4,5,6,7,8,9},i,j,k1=0;
     for(i=0;i<=2;i++)
	 { 	for(j=0;j<=2;j++)
 {  printf("%4d",a[i][j]);}
	  printf("\n"); }
    for(i=0;i<=2;i++)
	{	for(j=0;j<=2;j++)
	{  if(i==j||i==2-j)
	   k1=k1+a[i][j];
	}}
printf("斜线%4d",k1);}
22.输出一个3*3的数列赋初值,再输出一个数列使得负数变为0;
#include<stdio.h>
void main()
{int a[3][3]={1,2,-3,4,5,0,7,8,9},i,j;
     for(i=0;i<=2;i++)
	 { 	for(j=0;j<=2;j++)
	 { printf("%4d",a[i][j]);}
	  printf("\n"); }
	  for(i=0;i<=2;i++)
	 { 	for(j=0;j<=2;j++)
	 { if(a[i][j]<0)
      a[i][j]=0;
     printf("%4d",a[i][j]);}
	  printf("\n");
	 } }
23.字符组的初始化形式 输出结果为good morning!
#include<stdio.h>
void main()
{
	char s[20]={"good morning!"};
    puts (s); 
}24。输入10个数判断正数和负数的个数:
# include<stdio.h>
int main()
{
	int a[10],i,n=0,m=0;
	for(i=0;i<=9;i++)
	scanf("%d",&a[i]);
{if(a[10]>0)
{m=m+1;}
else if(a[i]<0)
{n=n+1;}
printf("%d",m);
printf("%d",n);
}return 0;}
25.输入一个数判断该数在2,5,8,9,12的位置
#include<stdio.h>
void main()
{
	int a[6]={2,5,8,9,12},i,j,x;
scanf("%d",&x);
for(i=0;i<=5;i++)
if(a[i]>x)break;
if(i>4)
a[5]=x;
else
{for(j=4;j>=i;j--)
  a[j+1]=a[j];
a[i]=x;	
}for(i=0;i<=5;i++)
printf("a[i]=%d\n",a[i]);
}26。输入十个数,输出其中负数和正数的数量;
#include<stdio.h>
void main()
{
int a[10],i,x=0,y=0,z;
  for(i=0;i<=9;i++)
  {
     scanf("%d",&a[i]); 
     if(a[i]<0)
	   x=x+1;
     if(a[i]==0)
	 y=y+1;   
  }
z=10-x-y;
 printf("正数%d\n",z);
 printf("负数%d\n",x);
printf("0:`%d\n",y);
}27。#include<stdio.h>
#include<iomanip.h>
int main()
{
int i,f[20]={1,1};
for(i=2;i<=9;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<=19;i++)
 {if(i%5==0)
   printf("  ");
   printf("f[i]=%d",f[i]);
  }return 0;}
28。#include<stdio.h>
#define N 4
#include<iomanip.h>
int main()
{int i,j,a[N][N];
	for(i=0;i<N;i++)
	for(j=0;j<N;j++)
		a[i][j]=i*i+j;
	for(i=0;i<N;i++)
	{for(j=0;j<N;j++)
	printf("a[i][j]=%d",a[i][j);printf("\n");
}
return 0;
}29。从键盘输入9个数字,三行三列
#include<stdio.h>
int main()
{int i,j,a[3][3];
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
{scanf("%d",&a[i][j]);}}
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
{if(i==0||j==0)
{printf("%d",a[i][j]);}}
printf("\n");
}return 0;}
30。输入一个字符串,只输出第一个数组
int main()
{
char st[20];
cout<<"input string:";
cin>>st;
cout<<st;
return 0;}
31。#include<iostream.h>
int main()
{
int a[10],i,k=0,s=0,l=0,m=0;
 for(i=0;i<=9;i++) cin>>a[i];
  for(i=1;i<=9;i++)
  {if(a[i]>0) {l++;}
    else if(a[i]<0) {m++;}
}
 k=k+l;
 s=s+m;
cout<<m<<"\n"<<l<<"\n";
return 0;
}32。字符串输出函数good
#include<stdio.h>
nt main()
{
    char st1[]={'g','o','o','d'};
    puts(st1);
    return 0;
33..#include<stdio.h>
int main()
{
	char st1[]="dood";
    puts(st1);
	return 0;}
34.五行四列 
#include<stdio.h>
void main()
{int i,j,a[5][4];//i=行;j=列
  for(i=0;i<=4;i++)
  {for(j=0;j<=3;j++)
	{a[i][j]= i+j;
    printf("%4d",a[i][j]);}
  printf("\n");
  } }
35.从键盘输入25个数字,五行五列,输出第一行和第一列
#include<stdio.h>
int main()
{int i,j,a[5][5];
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++)
{if(i==0||j==0)
{printf("%d",a[i][j]);}}
printf("\n");}return 0;}
36。用冒泡法对10个数从小到大排列
#include<iostream.h>
#include<iomanip.h>
int main()
{int a[10],i,j,t;
 cout<<"input 10 numbers:\n";
 for(i=0;i<10;i++)
  cin>>a[i];
 for(j=1;j<=9;j++)
  for(i=0;i<=9-j;i++)
	  if(a[i]>a[i+1])	  {t=a[i];a[i]=a[i+1];a[i+1]=t;}
cout<<"the sorted numbers:\n";
for (i=0;i<10;i++)
  cout<<setw(4)<<a[i];
cout<<"\n";
return 0;}
37.#include<stdio.h>
#include<string.h>
int main()
{char s[20],t;
int i,j;
gets(s);
for(i=0,j=strlen(s)-1;i<j;i++,j--){t=s[i];s[i]=s[j];s[j]=t;}
puts(s);
return 0;
38.
#include<stdio.h>
int main()
{int a[4]={1,2},i;
	for(i=0;i<=3;i++)
       printf("%3d",a[i]);
 return 0;}
39.输入十个数,输出其中负数和正数的数量;
#include<stdio.h>
void main()
{int a[10],i,x=0,y=0,z;
  for(i=0;i<=9;i++)
  {scanf("%d",&a[i]); 
     if(a[i]<0)
	   x=x+1;
     if(a[i]==0)
	 y=y+1;   }
z=10-x-y;
 printf("正数%d\n",z);
 printf("负数%d\n",x);
printf("0:`%d\n",y);
}
40.同上 {(if;else if)比双if好,因为双if执行两次}
#include<stdio.h>
void main()
{int a[10],i,x=0,y=0,z=0;
  for(i=0;i<=9;i++)
  {scanf("%d",&a[i]); 
     if(a[i]<0)
	 x=x+1;
     else if(a[i]==0)
	 y=y+1;   
     else
    	 z=z+1;   }
 printf("正数%d\n",z);
 printf("负数%d\n",x);
printf("0:`%d\n",y);
}43.杨辉三角(异形):
#include<stdio.h> 
void main()
{int a[10][10],i,j;
	for(i=0;i<=9;i++)
	{a[i][0]=1;
		a[i][i]=1;}
	for(i=2;i<=9;i++)
		for(j=1;j<=i-1;j++)		a[i][j]=a[i-1][j]+a[i-1][j-];
		for(i=0;i<=9;i++)
		{for(j=0;j<=i;j++)		printf("%-4d",a[i][j]);
			printf("\n");}}
44.3*3的魔方阶层!
#include<stdio.h> 
void main()
{int a[3][3],i,j,k;
	i=0;
	j=1;
	for(k=1;k<=9;k++)
	{a[i][j]=k;
		if(k%3==0)
		{i=i+1;}
		else
		{i=i-1;
			j=j+1;
			if(i<0)
				i=2;
			if(j>2)
				j=0;}}
	for(i=0;i<=2;i++)
	{for(j=0;j<=2;j++)
	printf("%4d",a[i][j]);
		printf("\n");}}
45.5*5的魔方阶层(通用)
#include<stdio.h> 
#define N 5
void main()
{int a[N][N],i,j,k;
	i=0;
	j=1;
	for(k=1;k<=N*N;k++)
	{a[i][j]=k;
		if(k%N==0)
		{i=i+1;}
		else
		{i=i-1;
			j=j+1;
			if(i<0)
				i=N-1;
			if(j>N-1)
				j=0;}}
	for(i=0;i<=N-1;i++)
	{for(j=0;j<=N-1;j++)
	printf("%4d",a[i][j]);
		printf("\n");}}
45.I love you too!
#include<stdio.h>
void main()
{
char s[10];
int i;
for(i=0;i<10;i++)
  scanf("%c",&s[i]);
for(i=0;i<10;i++)
  printf("%c",s[i]);
printf(" too\n");
}
46.字符串的应用
#include<stdio.h>
void main()
{
char s[10];//最多输入十个
scanf("%s",s);
printf("%s\n",s);
}
47.gets(s);puts(s);的应用
#include<stdio.h>
void main()
{
char s[10];
gets(s);
puts(s);}
48.输入一个字符串,判断有几个小写字母,大写字母,数字和空格
(此题最好输入19个以内的数,
#include<stdio.h>
void main()
{
char s[20];
int i,a=0,b=0,c=0,d=0;
gets(s);
  for(i=0;i<=19;i++)//=for(i=0;s[i]!=\0;i++)
  {
    if(s[i]>='a'&&s[i]<='z')
		  a++;
    else if(s[i]>='0'&&s[i]<='9')
		  c++;
    else if(s[i]>='A'&&s[i]<='Z')
		  b++;
    else if(s[i]==' ')
		  d++;
    else if(s[i]=='\0')
		  break;
  }
printf("小写字母=%d\n""大写字母=%d\n""数字=%d\n""空格=%d\n",a,b,c,d);
}
49.将字符串中的所有大写字母改为相应的小写字母
#include<stdio.h>
void main()
{
char s[20];
int i;
gets(s);
  for(i=0;i<=19;i++)
  {
    if(s[i]>='A'&&s[i]<='Z')
    s[i]=s[i]+32; 
  } 
puts(s);
}
50.将两个字符串连接在一起
#include<stdio.h>
#include<string.h>
void main()
{
char s1[20],s2[20];
gets(s1);
 gets(s2);
 strcat(s1,s2);
 puts(s1);
}
Published 10 original articles · won praise 10 · views 130

Guess you like

Origin blog.csdn.net/helo_world01/article/details/104234372