课后作业 |
输入10个整数并将其由小到大排序输出(冒泡排序)。 输入一行字符,统计其中单词的个数,单词之间用空格分隔。 编写一个程序,将字符数组a中的全部字符复制到字符数组b中。 随机输入一个长度小于30的字符串,检测输入的字符串是否存在于"1234567890qwertyuiopasdfghjklzxcv12bnm" 输入两个字符串,进行拼接,然后输出。 将10个整数放到一维数组中,输出该数组中的最大值和最小值的下标,然后将最小值与和数组中的第一个元素对换,最大值与最后一个元素对换位置。 输入10个数,统计非负数的个数、并计算非负数的和。从键盘输入一个字符串,判断输入字符串中数字的个数、大写字母的个数、小写字母的个数,以*作为字符串输入结束的标志。 |
提高作业 |
将下列二维数组行列互换 输入一个字符串,判断是否是回文。(回文:这个字符串顺读和反读是一样的。如“abcba”和”123321” |
目录
课后作业
提高作业
//10个数排9趟(0,1,。。。,8)
//第0趟排10-1-0个数(0,1,。。。,n-2)
//第8趟排10-1-8个数(0)
#include
int main()
{
int i,j;
int buff[128];
printf("输入十个整数:");
for(i =0;i<10;i++)
{
scanf("%d",&buff[i]);
}
for(i=0;i<10-1;i++)
{
for(j=0;j<10-1-i;j++)
if(buff[j]>buff[j+1])
{
int temp;
temp=buff[j];
buff[j]=buff[j+1];
buff[j+1]=temp;
}
}
printf("排序结果:");
for(i=0;i<10;i++)
printf("%d ",buff[i]);
printf("\n");
}
/*编译结果:
输入十个整数:12 1 23 43 54 56 12 23 4 23 354
排序结果:1 4 12 12 23 23 23 43 54 56
*/
/*******************************************************************************************************/
//gets读入字符串,判断空格个数,以'\0'为结束。
#include
#include
int main()
{
int i,j=0;
char buff[128];
printf("输入字符串:");
gets(buff);
for(i=0;i<128;i++)
{
if(buff[i]==32 && buff[i]!=0)
j++;
if(buff[i]==0)
break;
}
printf("单词个数为:%d\n 个。",j+1);
}
/*编译结果:
输入字符串:Anything in life worth doing is worth overdoing.
单词个数为:8 个。
*/
//优化代码:
/*输入一行字符,统计其中单词的个数,单词之间用空格分隔。*/
//分析情况:(1)qwe ert qw;(2)qwe ert qw ;(3) qwe ert qw;
//(1)开头结尾无空格,中间连续多空格
//(2)结尾空格
//(3)开头空格
#include
#include
int main()
{
int i,num=0;
char buff[128];
printf("输入字符串:");
gets(buff);
while(buff[i]!=0)
{
if(buff[i]==32)
{//当前i是空格,下一个不是空格也不是结束符,则一个单词
if(buff[i+1]!=32&&buff[i+1]!=0)
num++;
}
i++;
}
if(buff[0]==32)
printf("单词个数为:%d 个。\n",num);
else
printf("单词个数为:%d 个。\n",num+1);
}
/*编译结果:
(1)输入字符串:qw qw qw qw
单词个数为:4 个。
(2)输入字符串: qw qw
单词个数为:2 个。
(3)输入字符串: qw
单词个数为:1 个。
*/
/*******************************************************************************************************/
//目前学习进度,可以使用循环复制,以'\0'为结束标志。
#include
#include
int main()
{
int i=0,j=0;
char a[128],b[128];
printf("输入字符串到a:");
gets(a);
for(i=0;i<128;i++)
{
if(a[i]!=0)
{
b[i]=a[i];
}
else
{
break;
}
}
b[i]='\0';
printf("a数组为:");
puts(a);
printf("\nb数组为:");
puts(b);
}
/*编译结果:
输入字符串到a:qwer
a数组为:qwer
b数组为:qwer
*/
/*******************************************************************************************************/
//两层循环相互比较,短的字符串读到'\0'结束。
#include
#include
int main()
{
int i=0,j=0,m=0;
char a[30],
b[]="1234567890qwertyuiopasdfghjklzxcv12bnm";
printf("输入字符串到a:");
gets(a);
for(i=0;i<38;i++)//qwert
{
m=i,j=0;
while(a[j]!=0 && a[j] == b[m])
{
j++;
m++;
}
if(a[j]==0)
{
printf("存在\n");
break;
}
}
}
/*编译结果:
输入字符串到a:er
存在
*/
/*******************************************************************************************************/
//找到a的\0,接到b的\0
#include
#include
int main()
{
int i=0,j=0;
char a[128],b[128];
printf("输入字符串a:");
gets(a);
printf("输入字符串b:");
gets(b);
while(a[i]!=0)
{
i++;
}
while(b[j]!=0)
{
a[i]=b[j];
i++;
j++;
}
a[i]=0;
printf("拼接结果:");
puts(a);
}
/*编译结果:
输入字符串a:qwer
输入字符串b:123
拼接结果:qwer123
*/
/*******************************************************************************************************/
//for循环确定最大值,然后调换位置
#include
int main()
{
int i,min,n=0,max,x=0;
int buff[10];
printf("输入十个整数:");
for(i=0;i<10;i++)
{
scanf("%d",&buff[i]);
}
min=buff[0];max=buff[0];
for(i=0;i<10;i++)
{
if(buff[i]>max)
{
max=buff[i];
x=i;
}
if(buff[i]
/*编译结果:
输入十个整数:12 2 12 34 45 67 45 34 100 5
调整结果为:2 12 12 34 45 67 45 34 5 100
*/
/*******************************************************************************************************/
#include
int main()
{
int i,j=0,sum=0;
int buff[10];
printf("输入十个整数:");
for(i=0;i<10;i++)
{
scanf("%d",&buff[i]);
if(buff[i]>=0)
{
j++;
sum+=buff[i];
}
}
printf("非负个数为:%d,和为%d\n",j,sum);
}
/*编译结果:
输入十个整数:1 2 3 4 5 -1 -2 -3 -4 -5
非负个数为:5,和为15
*/
/*******************************************************************************************************/
#include
#include
int main()
{
int i,num=0,a=0,A=0;
char buff[128];
printf("输入字符串并以*结尾:");
gets(buff);
for(i=0;i<128;i++)
{
if(buff[i]>=48&&buff[i]<=57)
{
num++;
}
if(buff[i]>=65&&buff[i]<=90)
{
A++;
}
if(buff[i]>=97&&buff[i]<=122)
{
a++;
}
if(buff[i]=='*')
{
break;
}
}
printf("数字个数为%d个,大写字母为%d个,小写字母为%d个\n",num,A,a);
}
/*编译结果:
输入字符串并以*结尾:12QWEqwer*
数字个数为2个,大写字母为3个,小写字母为4个
*/
#include
int main()
{
int i,j;
int buff[3][3];
printf("输入9位数据:");//00 01 02 00 10 20
for(i=0;i<3;i++) //10 11 12 01 11 21
{ //20 21 22 02 12 22
for(j=0;j<3;j++)
{
scanf("%d",&buff[i][j]);
}
}
printf("二维数组为:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",buff[i][j]);
}
printf("\n");
}
printf("\n");
printf("二维数组转置的结果为:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",buff[j][i]);
}
printf("\n");
}
printf("\n");
}
/*编译结果:
输入9位数据:1 2 3 4 5 6 7 8 9
二维数组为:
1 2 3
4 5 6
7 8 9
二维数组转置的结果为:
1 4 7
2 5 8
3 6 9
*/
/*******************************************************************************************************/
#include
#include
int main()
{
int i,num=0,flag;
char buff[128];
printf("输入字符串:");
gets(buff);
while(buff[num]!=0)
{
num++;
}
for(i=0;i
/*编译结果:
输入字符串:asddsa
是回文
*/