c语言练习题(四)

时间:2023-02-22 23:31:09

练习作业 :

1、  有一篇文章,共有三行文字,每行有80个字符。统计其中有多少个英文字母、空格、数字及其他符号。

#include<stdio.h>

voidmain() {

inti,j,zm,sz,kg,oth;

 char text[3][80];

 zm=sz=kg=oth=0;

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

           printf("请输入第 %d行:\n",i+1);   

           gets(text[i]);

           

           for (j=0;j<80 && text[i][j]!='\0';j++)

           {

                    if ((text[i][j]>='A'&&text[i][j]<='z') || (text[i][j]>='a' && text[i][j]<='z'))

           zm++;       

           else if (text[i][j]>='0' &&text[i][j]<='9')

                    sz++;     

           else if (text[i][j]==' ')       

                    kg++;     

           else              oth++;     

 }

           

 

 }    

 printf("字母有: %d个\n",zm); 

 printf("数字有: %d个\n",sz);

 printf("空格有: %d个\n",kg);  

 printf("其他有: %d个\n",oth);

}

 

2、  输入两个字符串,然后将两个字符串链接起来不使用strcat函数;

#include<stdio.h>

#include<string.h>

voidmain() {

          int i,j,m,n;

          char x[20],y[10];

          printf("请输入第一个字符串:");

          scanf("%s",&x);

          printf("请输入第二个字符串:");

          scanf("%s",&y);

    m=strlen(x);//取得是

    n=strlen(y);

    for(i=m,j=0;j<n+1;i++,j++){//scanf接收了'\0',所以要n+1

          x[i]=y[j];

          }

          puts(x);

 

}

3、  找出一个二维数组的“鞍点”,即该位置的元素在该行上最大,该列上最小数,鞍点肯能有,也可能没有;数据如下:{{9,80,205,40},{90,-60,96,1},{210,-3,102,-89}}

4、  模拟实现栈

5、  模拟实现队列

6、  输入一句话,把其中所有小写字符都转为大写后输出

#include<stdio.h>

#include<string.h>

voidmain() {

          int i,j,m,n;

          char x[100];

          printf("请输入字符串:");

          scanf("%s",&x);

         

    m=strlen(x);

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

 

                   x[i]   =  toupper(x[i]); //小写转为大写函数 toupper大写转小写 tolower

          /*     if(x[i]>='a'&& x[i]<='z'){

                  

                    x[i]-=32;

            

                   }

*/

 

 

          }

          puts(x);

 

}

7、  输入10个整数,冒泡排序后按升序输出对10个数进行排序后由小到大顺序输出;

#include"stdio.h"

voidmain(){   

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

 

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

                   printf("输入%d个整数!\n",i+1);

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

          }

          for(i=0;i<9;i++){  

                   for(j=0;j<9-i;j++) { 

                            if(a[j+1]<a[j]) 

                            {     

                                      temp=a[j]; 

                                      a[j]=a[j+1]; 

                                      a[j+1]=temp;    

        } 

 

                   }

          }

 

 

                   printf("排序后的数组为:\n"); 

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

                   printf("排序后输出为:%d \t",a[i]);

    }

 

8、  已有一个排好序的数组,输入一个数,要求按原来排序的规律将它插入数组中

 

 

9、  在一个有10个数据的数组中,用户输入一个数字,查找该数是否在数组中存在,给出相应的提示 

#include<stdio.h>

voidmain(){

ints[10]={1,3,6,9,11,28,34,45,46,56};

          intleft=0,right=sizeof(s)/sizeof(s[0]),middle=0,i=0,m;

          printf("请输入查找数字:");

          scanf("%d",&m);

 

          while(left<=right){

            

                   middle=(right+left)/2;

                   i++;

                   if(m>s[middle]){

                    

                   left=middle+1;

                   }else if(m<s[middle]){

 

        right=middle-1;

 

                   }else{

                  

                     printf("查找了%d次,查到了%d数据,位置是第%d\n",i,m,middle+1);

                     return;

                  

                   }

 

           

          }

 printf("此数字不存在!");

 

}

10、 用折半查找法,实现对10个数据中的数据的查找

#include<stdio.h>

voidmain(){

ints[10]={1,3,6,9,11,28,34,45,46,56};

          intleft=0,right=sizeof(s)/sizeof(s[0]),middle=0,i=0,m;

          printf("请输入查找数字:");

          scanf("%d",&m);

 

          while(left<=right){

            

                   middle=(right+left)/2;

                   i++;

                   if(m>s[middle]){

                    

                   left=middle+1;

                   }else if(m<s[middle]){

 

        right=middle-1;

 

                   }else{

                  

                     printf("查找了%d次,查到了%d数据,位置是第%d\n",i,m,middle+1);

                     return;

                  

                   }

 

           

          }

 printf("此数字不存在!");

 

}