c语言编程入门题

这是一个包含多个C语言编程题目的集合,包括字符转换、整数操作、字符串处理、数组排序、输入输出处理等多个方面,旨在帮助初学者巩固C语言基础知识。
摘要由CSDN通过智能技术生成

1. 从键盘输入一个大写字母,要求改用小写字母输出,并输出与这个小写字母相邻的两个字母及它们的ASCII码的值1. 从键盘输入一个大写字母,要求改用小写字母输出,并输出与这个小写字母相邻的两个字母及它们的ASCII码的值

    样例输入:B

样例输出:b a c

          98 97 99

    

测试输入: D

测试输出: d c e

           100 99 101

#include<stdio.h>

int main()

{

char s1,s2,s3;

int a,b,c;

scanf("%c",&s1);

s1=s1+32;

s2=s1-1;

s3=s1+1;

a=s1;

b=s2;

c=s3;

printf("%c %c %c\n",s1,s2,s3);

printf("%d %d %d\n",a,b,c);

return 0;

}

2. 输入两个整数,并将其中较大的显示出来。

样例输入:5 4

样例输出:max=5

    

测试输入:2 8

测试输出:max=8

#include<stdio.h>

int main()

{

int a,b,max=0;

scanf("%d%d",&a,&b);

max=a;

if(a<b)

max=b;

printf("%d\n",max);

return 0;

}

 

3. 输入a,b,c三个整型变量的值,输出其中的最小值。

样例输入:5 4 8

样例输出:4

    

测试输入:2 6 8

测试输出:2

#include<stdio.h>

int main()

{

int a[3],i,j,t;

for(i=0;i<3;i++)

scanf("%d",&a[i]);   //对数组进行赋值

 

//第一次循环  i=0  a[0]  第二次循环时:i=1  a[1]

for(i=0;i<3;i++)

for(j=i+1;j<3;j++)

{

if(a[i]>a[j])

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

printf("%d\n",a[0]);

return 0;

}

4. 输入年号y,月份m,输出该年该月天数。

31   30  29  28

样例输入:2004 2

样例输出:29

    

测试输入: 2015 2

测试输出: 28

#include<stdio.h>

int main()

{

int y,m;

scanf("%d%d",&y,&m);

switch(m)

{

case 1:

printf("30\n");break;

case 2:

{

if((y%4==0&&y%100!=0)||(y%400==0))

printf("29\n");2012 2016 2020 2024  二月份是29天

1 3 5 7 8 10 12  是有31日

else

printf("28\n");break;

}

case 3:

printf("31\n");break;

case 4:

printf("30\n");break;

case 5:

printf("31\n");break;

case 6:

printf("30\n");break;

case 7:

case 8:

printf("31\n");break;

case 9:

printf("30\n");break;

case 10:

printf("31\n");break;

case 11:

printf("30\n");break;

case 12:

printf("31\n");break;

}

return 0;

}

5. 输入若干非0整数,直到输入0时停止,要求输入的整数最多不超过20个,统计其中正数的个数,负数的个数。

样例输入:5 4 8 -2 6 -9 7 3 -1 9 0

样例输出:posn=7,negn=3

    

测试输入: 9 -8 2 -6 8 6 -7 -3 1 -5 0

测试输出: posn=5,negn=5

#include<stdio.h>

int main()

{

int a[20],n=0,c=0,b=0,i;

while((getchar())!='0')

for(i=0;i<20;i++)

{

scanf("%d",&a[i]);

n=n+1;

if(a[i]==0)

break;

}

for(i=0;i<n;i++)

{

if(a[i]>0)

c=c+1;

if(a[i]<0)

b=b+1;

}

printf("posn=%d,negn=%d\n",c,b);

return 0;

}

6. 从键盘上输入m的值,判断其是否素数 

样例输入:7

样例输出:7 is a prime number

    

测试输入: 9

测试输出: is not a prime number

#include<stdio.h>

int main()

{

int m,i,flag=1;

scanf("%d",&m);

for(i=2;i<m;i++)

    if(m%i==0)

{

flag=0;

break;

}

if(flag==1)

printf("%dis a prime number\n",m);

else

     printf("%dis not a prime number\n",m);

return 0;

}

 

 

 

 

 

 

 

 

 

 

 

7.打印如下图形到屏幕上,打印行数n由键盘输入。(直角三角形)

                

                *

               * *

             * * *

            * * * *

          * * * * *  

 

样例输入:4

样例输出:

                 *

               * *

             * * *

            * * * *

          * * * * *  

#include<stdio.h>

int main()

{

   int i,n,j;

   scanf("%d",&n);

   for(i=0;i<=n+1;i++)

   {

   for(j=1;j<=n+1-i;j++)

   printf(" ");

   for(j=1;j<=i;j++)

   printf("*");

   printf("\n");

   }

   return 0;

}

 

8. 请输入10个整数,并将其由小到大排序,然后将排序后的结果输出到屏幕上。

排序

样例输入:5 4 8 2 6 0 7 3 1 9

样例输出:0 1 2 3 4 5 6 7 8 9

    

测试输入: 9 7 6 5 2 3 1 8 4 0

测试输出: 0 1 2 3 4 5 6 7 8 9

#include<stdio.h>

int main()

{

int a[10],i,j,t;

for(i=0;i<10;i++)

scanf("%d",&a[i]);    数组进行赋值

for(i=0;i<10;i++)

for(j=i+1;j<10;j++)

if(a[i]>a[j])

{

t=a[i];

a[i]=a[j];

a[j]=t;

 

 

               var temp = arr[j+1];        // 元素交换

                arr[j+1] = arr[j];

                arr[j] = temp;

 

}

for(i=0;i<10;i++)

printf("%d ",a[i]);

printf("\n");

return 0;

}

9. 输入一句英文,按单词分行输出.

样例输入:

 spring summer fall winter

样例输出:

          spring

summer

          fall

winter

测试输入:

          We are students

测试输出:

We

          are

          students

#include<stdio.h>

int main()

{

char s[100];

int i,n=0;

gets(s);

for(i=0;s[i]!='\0';i++)

{

if(s[i]==' ')

s[i]='\n';

n++;

}

s[n]='\0';

puts(s);

return 0;

}

 

10.输入六个双精度的数,求出其中负数的平均值(保留4位小数)

#include<stdio.h>

int main()

{

double a[6],n=0,s=0,m;

int i;

for(i=0;i<6;i++)

scanf("%lf",&a[i]);

for(i=0;i<6;i++)

if(a[i]<0)

{

s=s+a[i];

n=n+1;

}

m=s/n;

printf("%.4lf\n",m);

return 0;

}

11.输入一亇数组,以0结束,求出所有负数的平均值。

#include<stdio.h>

int main()

{

int a[100];

int i;

double m,n=0,s=0,ave;

for(i=0;i<100;i++)

{

scanf("%d",&a[i]);

if(a[i]==0)

{

m=i;

break;

}

}

for(i=0;i<m;i++)

if(a[i]<0)

{

s=s+a[i];

n=n+1;

}

ave=s/n;

printf("%lf\n",ave);

return 0;

}

12.输入一亇字符串,将下标为奇数的字符选出来,将其按ASCALL码升序排列。

#include<stdio.h>

int main()

{

char s[100],s2[100],t;

int i,n,j=0,q;

gets(s);

for(i=0;s[i]!='\0';i++)

{

if((i%2)!=0)

{

s2[j]=s[i];

j++;

}

}

s2[j]='\0';

for(i=0;i<j;i++)

for(q=i;q<j;q++)

{

if(s2[i]>s2[q])

{

t=s2[i];

s2[i]=s2[q];

s2[q]=t;

}

}

puts(s2);

return 0;

}

13.输入一个n,k,n为十进制数字,将其转换为k进制输出(k为大于等于2小于等于9的整数).

#include<stdio.h>

int main()

{

   int n,k,m,t,s,i;

   int a[100];

   scanf("%d%d",&n,&k);

   m=n;

   t=n;

   for(i=0;i<100;i++)

   {

   m=m/k;

   t=t-m*k;

   if(m!=0)

   {

   a[i]=t;

   t=m;

   }

   else

   {

   a[i]=t;

   t=m;

   break;

   }

   }

   s=i;

   for(i=s;i>=0;i--)

   printf("%d",a[i]);

   printf("\n");

   return 0;

}

   14.输入一个字符串,将其奇数下标的字符移动到下一个奇数下标的位置。最后一个奇数位上的数字平移到第一个奇数下标处。

#include<stdio.h>

int main()

{

char s[100],a[100];

int i,j=0,q=0;

gets(s);

for(i=0;s[i]!='\0';i++)

{

if((i%2)!=0)

{

a[j]=s[i];

j++;

}

}

    a[j]='\0';

j=0;

for(i=0;s[i+2]!='\0';i++)

if((i%2)!=0)

{

s[i+2]=a[j];

j++;

}

s[i+2]='\0';

s[1]=a[j];

puts(s);

return 0;

}

15.

编写程序,从键盘输入一个字符串,并将字符串中的小写字母都改为相应的大写字母,其他字符不变。

标准输入:23efHI4why80NO

标准输出:23EFHI4WHY80NO

#include<stdio.h>

int main()

{

char s[100];

int i;

gets(s);

for(i=0;s[i]!='\0';i++)

if(s[i]>='a'&&s[i]<='z')

s[i]=s[i]-32;

s[i]='\0';

puts(s);

return 0;

}

16.

编写程序,从键盘输入一个字符串ss,并将ss中所有下标为偶数的位置上的字母转换为小写,(若该位置上不是字母,则不转换)。

标准输入:ABC4efGHS

标准输出:aBc4efgHs

#include<stdio.h>

int main()

{

char ss[100];

int i;

gets(ss);

for(i=0;ss[i]!='\0';i++)

if((i%2)==0)

    if(ss[i]>='A'&&ss[i]<='Z')

    ss[i]=ss[i]+32;

ss[i]='\0';

puts(ss);

return 0;

}

 

 

 

 

17.编写程序,从键盘输入两个字符串str1和str2,并将字符串str2接在str1后面(不得用字符串处理函数),样例输入的第一行是先读入整数n,表示有几组字符串(两个字符串为一组),然后读入字符串。

标准输入:2

         aaaaaa

         bbbbb

         cccc

         dsdsds

标准输出:aaaaaabbbbb

          Ccccdsdsds

 

#include<stdio.h>

void fun(char s1[],char s2[])

{

int i,j,q;

for(i=0;s1[i]!='\0';i++)

;

for(j=i,q=0;s2[q]!='\0';j++,q++)

{

s1[j]=s2[q];

}

s1[j]='\0';

}

 

int main()

{

int n;

char s[100][100];

int i,j;

scanf("%d\n",&n);

for(i=0;i<2*n;i++)

gets(s[i]);

for(i=0;i<2*n;i++)

if((i%2)==0)

{

fun(s[i],s[i+1]);

puts(s[i]);

}

return 0;

}

18.编写程序,从键盘输入m值,根据m,计算下列公式t的值(m为int型,t为double型),结果保留小数点4位,公式:t=1-1/2+1/3-1/4+……(-1)(m+1)/m(最后一项分子为-1的m+1次方)

标准输入:5

标准输出:0.7833

#include<stdio.h>

int main()

{

int m;

double t=0,n,q=-1,i;

scanf("%d",&m);

for(i=1;i<=m;i++)

{

q=q*(-1);

n=q/i;

t=t+n;

}

printf("%.4lf\n",t);

return 0;

}

19.编写程序,输入一个字符串str,依次取出字符串中的所有的字母,形成新的字符串,并取代原字符串。

标准输入::123dfsad43mln&*d

标准输出:dfsadmlnd

#include<stdio.h>

int main()

{

char str[100],s[100];

int i,j;

gets(str);

for(i=0,j=0;str[i]!='\0';i++)

if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='B'))

{

s[j]=str[i];

j++;

}

for(i=0;i<j;i++)

str[i]=s[i];

str[i]='\0';

puts(str);

return 0;

}

 

20.编写一个程序,从键盘输入一个三位数,判断这个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回“yes!”,否则返回“no!”。例如:输入123,结果显示“no!”
标准输入: 123 

#include<stdio.h>

int main()

{

int n;

int a,b,c;

scanf("%d",&n);

a=n%10;

b=n/10%10;

c=n/100;

if(a+c==b)

printf("yes!\n");

else

printf("no!\n");

return 0;

}

21.编写一个程序,输入一个5×5的二维数组a,实现:使数组对角线及右上半三角元素中的值全部置成0。注意每个数字后都有空格,每行输出都有换行

标准输入:

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

标准输出:

0 0 0 0 0

1 0 0 0 0

1 2 0 0 0

1 2 3 0 0

1 2 3 4 0

#include<stdio.h>

int main()

{

int a[5][5];

int i,j;

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==j)||(j>i))

   a[i][j]=0;

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

printf("%d ",a[i][j]);

printf("\n");

}

return 0;

}

 

22.编写一个程序,从键盘输入含有n个实数的一维数组,求此一维数组的平均值,结果保留两位小数, 其中n为int型,数组为double型。
标准输入5

1.1 2.2 3.3 4.4 5.5

标准输出 3.30

#include<stdio.h>

int main()

{

int n,i;

double a[100],s=0,ave;

scanf("%d",&n);

for(i=0;i<n;i++)

scanf("%lf",&a[i]);

for(i=0;i<n;i++)

{

s=s+a[i];

}

ave=s/(double)n;

printf("%.2lf\n",ave);

return 0;

}

 

23.编写一个程序,从键盘输入一个含有n个整数的一维数组,并移动一维数组中的内容,要求把下标从p到n-1(p≤n-1)的数组元素平移到数组的前面。 样例输入分3行,第一行为整数的个数n,第二行为n个整数,第三行为下标p。

标准输入: 15

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

9

标准输出: 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9

#include<stdio.h>

int main()

{

int a[100],b[100];

int n,j,i,p;

scanf("%d",&n);

for(i=0;i<n;i++)

scanf("%d",&a[i]);

scanf("%d",&p);

for(i=p,j=0;i<n;i++)

{

b[j]=a[i];

j=j+1;

}

for(i=0;i<p;i++)

{

b[j]=a[i];

j=j+1;

}

for(i=0;i<n;i++)

{

a[i]=b[i];

printf("%d ",a[i]);

}

printf("\n");

return 0;

}

 

24.移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(不含p)的数组元素平移到数组的最后。例如,输入:1,2,3,4,5,6,7,8,9,10;p的值为3。移动后数组内容应为4,5,6,7,8,9,10,1,2,3。

#include<stdio.h>

int main()

{

int a[100],b[100];

int n,j,i,p;

scanf("%d",&n);

for(i=0;i<n;i++)

scanf("%d",&a[i]);

scanf("%d",&p);

for(i=p,j=0;i<n;i++)

{

b[j]=a[i];

j=j+1;

}

for(i=0;i<p;i++)

{

b[j]=a[i];

j=j+1;

}

for(i=0;i<n;i++)

{

a[i]=b[i];

printf("%d ",a[i]);

}

printf("\n");

return 0;

}

 

25.从键盘输入一个字符串并保存在字符strl中,把字符串中strl下标为偶数的字符保存在字符串strl2中并输出。

例如,当strl=“cdefghij",则strl2="cegi".标准输入:whatisit,标准输出waii

#include<stdio.h>

int main()

{

char str1[100],str12[100];

int i,j;

gets(str1);

for(i=0,j=0;str1[i]!='\0';i++)

if(i%2==0)

{

str12[j]=str1[i];

j++;

}

str12[j]='\0';

puts(str12);

return 0;

}

26.)编写一个程序,程序定义一个5*5二维数组,二维数组题目中给出,编写程序,求数组周边元素的平方和。数组a为{0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1}求出结果为310.样例输出占2行,1行为整形数据,其值为平方和,另一行为回车符。

标准输入0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1

标准输出310

#include<stdio.h>

int main()

{

int a[5][5];

int i,j,s=0;

for(i=0;i<5;i++)

for(j=0;j<5;j++)

scanf("%d",&a[i][j]);

for(j=0;j<5;j++)

s=s+a[0][j]*a[0][j];

for(i=1;i<5;i++)

s=s+a[i][0]*a[i][0];

for(j=1;j<5;j++)

s=s+a[4][j]*a[4][j];

for(i=1;i<4;i++)

s=s+a[i][4]*a[i][4];

printf("%d\n",s);

return 0;

}

27.从键盘输入3*3的矩阵的各元素之值,输出主对角线上元素之积。

#include<stdio.h>

int main()

{

int a[3][3];

int i,j,s=1;

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==j)

     s=s*a[i][j];

printf("%d\n",s);

return 0;

}

28.编写一个程序,从键盘输入一个长整数,从低位开始取出长整型数中奇数位上的数,依次构成一个人新长整数,并输出。

标准输入 4576235

标准输出4725

#include<stdio.h>

int main()

{

  char s[100],a[100];

  int i,n,j,q;

  gets(s);

  for(i=0;s[i]!='\0';i++)

  ;

  n=i;

  for(i=n-1,j=0,q=1;i>=0;i--)

 {

  if((q%2)!=0)

  {

  a[j]=s[i];

  j++;

  q++;

  }

  else

  q++;

  }

 

  a[j]='\0';

 for(i=j-1;i>=0;i--)

 printf("%c",a[i]);

 printf("\n");

  return 0;

}

29.

键盘输入两个正整数m和n,在屏幕上输出m和n的所有公约数与各公约数之和

#include<stdio.h>

int main()

{

int m,n,min;

int i;

int s=0;

scanf("%d%d",&m,&n);

if(m>n)

min=n;

else

min=m;

for(i=2;i<min;i++)

if((min%i)==0)

{

printf("%d ",i);

s=s+i;

}

printf("\n");

printf("%d\n",s);

return 0;

}

30.

数组a、b中各存放一个字符串,将b中所有字符插入a中,a中字符按递增顺序排放并输出

#include<stdio.h>

int main()

{

  char a[100],b[100],t;

  int i,j,q;

  gets(a);

  gets(b);

  for(i=0;a[i]!='\0';i++)

  ;

  for(j=i,q=0;b[q]!='\0';q++,j++)

  {

  a[j]=b[q];

  }

  a[j]='\0';

  for(i=0;i<j;i++)

  for(q=i+1;q<j;q++)

  {

  if(a[i]<a[q])

  {

  t=a[i];

  a[i]=a[q];

  a[q]=t;

  }

  }

  puts(a);

return 0;

}

31.从键盘输入一个含多个单词的字符串,字符串前后有空格若干,与单词之间有若干空格,删除字符串前后的所有空格和单词之间的空格(单词之间保留一个空格)然后输出结果字符串。

#include<stdio.h>

int main()

{

  char a[100],s[100];

  int i,j,q,word=0;

  gets(a);

 for(i=0;a[i]!='\0';i++)

 {

 if(a[i]==' ')

 continue;

 else

 break;

 }

 q=i;

 

  for(i=q,j=0;a[i]!='\0';i++)

 {

     if(a[i]!=' ')

 {

 word=0;

 s[j]=a[i];

 j++;

 }

 if(a[i]==' ')

 {

 if(word==0)

 {

 word=1;

 s[j]=' ';

 j++;

 }

 else

 continue;

 }

  }

 s[j]='\0';

 puts(s);

 return 0;

  

}

31.从键盘输入两个由二进制数组成的字符串(小于32位),转化为无符号十进制数,相加并输出

#include<stdio.h>

int main()

{

char s[100],a[100];

int m=0,n=0,p,q,k;

int i,j,t;

gets(s);

gets(a);

for(i=0;s[i]!='\0';i++)

;

p=i;

t=0;

for(i=p-1;i>=0;i--)

{

k=s[i]-48;

for(j=1;j<=t;j++)

k=k*2;

t=t+1;

m=m+k;

}

for(i=0;a[i]!='\0';i++)

;

q=i;

t=0;

for(i=q-1;i>=0;i--)

{

k=a[i]-48;

for(j=1;j<=t;j++)

k=k*2;

n=n+k;

t=t+1;

}

printf("%d %d %d ",m,n,m+n);

printf("\n");

return 0;

}

32某项比赛10人参加,依此输入其成绩,然后按原顺序输出成绩,名次。

#include<stdio.h>

int main()

{

int a[10],b[10],c[10];

int i,t,j;

for(i=0;i<10;i++)

{

scanf("%d",&a[i]);

b[i]=a[i];

}

for(i=0;i<10;i++)

for(j=i+1;j<10;j++)

{

if(b[i]<b[j])

{

t=b[i];

b[i]=b[j];

b[j]=t;

}

}

for(i=0;i<10;i++)

for(j=0;j<10;j++)

if(a[i]==b[j])

c[i]=j+1;

for(i=0;i<10;i++)

printf("%d %d \n",a[i],c[i]);

return 0;

}

 

 

 

 

33.

编写一个程序,输入一个字符串str和一个字符串ch,判断ch是否与str中的某个字符相同,若有相同的,输出str;若无相同的,将其插在字符串的最后输出

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值