练习作业 :
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("此数字不存在!");
}