1.输入一个字符串。删除空格
hello world ! ! !
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char dest[100]="";
char src[100]="";
gets(src);
int i=0;
for(int j=0;j<strlen(src);j++)
{
if(src[j]!=' ')
dest[i++]=src[j];
}
dest[i]='\0';
puts(dest);
return 0;
}
2. 输入一个字符串,实现单词的逆置
good good study ---->study good good
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char str[100]="";
gets(str);
int i=0,j=strlen(str)-1;
while(i<j)
{
char t=str[i];str[i]=str[j];str[j]=t;
i++;j--;
}
i=j=0;
while(str[i]!='\0')
{
while(str[j]!=' '&&str[j]!='\0')
j++;
int k=j-1;
while(i<k)
{
char t=str[i];str[i]=str[k];str[k]=t;
i++;k--;
}
while(str[j]==' ')
j++;
i=j;
}
puts(str);
return 0;
}
3.输入一个字符串,计算单词的个数
"good good study" 3
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char str[100]="";
gets(str);
int count=0,flag=0;
for(int i=0;i<strlen(str);i++)
{
if(str[i]!=' ')
{
if(flag==0)
{
count++;
flag=1;
}
}
else
flag=0;
}
printf("单词的个数为%d\n",count);
return 0;
}
4.穷举算法:“鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int x,y,z;
for(x=0;x<=100;x++)
{
for(y=0;y<=100;y++)
{
z=100-x-y;
if(z>=0&&5*x+3*y+z/3.0==100)
printf("公鸡有%d只,母鸡有%d只,小鸡有%d只\n",x,y,z);
}
}
return 0;
}
5. 打印图形:九九乘法表
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf("%d×%d=%-4d",j,i,j*i);
putchar(10);
}
return 0;
}
6.循环输入n个元素,交换数组中最大值和最小值
12 3 5 2 5 --->2 3 5 12 5
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int n;
printf("please enter n:");
scanf("%d",&n);
int a[n],i;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
int max=a[0],min=a[0],maxi=0,mini=0;
for(i=0;i<n;i++)
{
if(max<a[i])
{
max=a[i];
maxi=i;
}
if(min>a[i])
{
min=a[i];
mini=i;
}
}
a[maxi]=min,a[mini]=max;
for(i=0;i<n;i++)
printf("%d ",a[i]);
putchar(10);
return 0;
}
7.输入字符串,输入变量k的值,将字符循环右移k位
eg: k=2
char arr[]="abcde"
移动的结果是:
deabc
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char a[100]="";
gets(a);
int k,i,n=strlen(a);
printf("k=");
scanf("%d",&k);
char b[100]="";
for(i=0;i<k;i++)
b[i]=a[i];
for(i=n-1;i>=k;i--)
a[(i+k)%n]=a[i];
for(i=0;i<k;i++)
a[(i+k)%n]=b[i];
puts(a);
return 0;
}
8.定义字符串并输入,请实现对字符串每个字符升序排序
“bdcae” --->"abcde"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char a[100]="";
gets(a);
for(int i=1;i<strlen(a);i++)
{
for(int j=0;j<strlen(a)-i;j++)
{
if(a[j]>a[j+1])
{
char t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
puts(a);
return 0;
}
9.输入5个学生的姓名,请输出姓名中的最大值
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char a[5][100];
int i;
for(i=0;i<5;i++)
scanf("%s",a[i]);
char max[100];
strcpy(max,a[0]);
for(i=0;i<5;i++)
{
if(strcmp(max,a[i])<0)
strcpy(max,a[i]);
}
printf("最大值为%s\n",max);
return 0;
}
全
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void delete_space(char str[]);
void str_rev(char str[]);
void delete_space(char str[]);
void Print();
void str_rev(char str[]);
void swap_max_min(int *p,int n);
int world_count(char str[]);
void QiongJu();
char* Max_name(char (*p)[128],int line,int row);//p-->str
void move(char *str,int k);
int main(int argc, const char *argv[])
{
int chioce;
while(1)
{
printf("1.删除空格\n");
printf("2.单词逆值\n");
printf("请输入你的选择:");
scanf("%d",&chioce);
switch(chioce)
{
case 1:
{
char str[128]="";
printf("please enter str:");
getchar();
gets(str);
//调用删除空格的函数
delete_space(str);
}
break;
case 2:
{
char str[]="good good study";
str_rev(str);
}break;
case 3:
{
char str[128]="";
printf("please enter str:");
getchar();
gets(str);
//计算单词的个数
printf("单词的个数是:%d\n",world_count(str));
}break;
case 4:
{
QiongJu();
}break;
case 5:
{
Print();
}break;
case 6:
{
int arr[]={12,3,5,3,6,8,3,6};
swap_max_min(arr,sizeof(arr)/sizeof(arr[0]));
}break;
case 7:
{
char str[128]="";
int k;
printf("please enter str:");
scanf("%s",str);
printf("please enter k:");
scanf("%d",&k);
move(str,k);
}break;
case 8:
{
char str[5][128]={""};
for(int i=0;i<5;i++)
{
printf("please enter %d name:",i+1);
scanf("%s",str[i]);
}
char*p=Max_name(str,5,128);
puts(p);
}break;
default:printf("error\n");break;
}
}
return 0;
}
char* Max_name(char (*p)[128],int line,int row)//p-->str
{
static char max[128];
strcpy(max,*p);//max赋值为第一个字符串
//aaa bbbb cccc ddd
//max
for(int i=0;i<line;i++)
{
if(strcmp(max,*(p+i))<0)
{
strcpy(max,*(p+i));
}
}
return max;
}
void move(char *str,int k)
{
//k=2
//abcde
for(int j=0;j<k;j++)
{
char t=*str;
int n=strlen(str);
for(int i=n-1;i>0;i--)
{
str[(i+1)%n]=str[i];
}
str[1]=t;
}
puts(str);
}
void swap_max_min(int *p,int n)
{
int max=*p,min=*p,maxi=0,mini=0;
for(int i=0;i<n;i++)
{
if(max<*(p+i))
{
max=*(p+i);maxi=i;
}
if(min>*(p+i))
{
min=*(p+i);mini=i;
}
}
//交换 a[maxi] a[mini]
int t=*(p+maxi);*(p+maxi)=*(p+mini);*(p+mini)=t;
for(int i=0;i<n;i++)
printf("%d ",*(p+i));
}
//九九乘法表
void Print()
{
for(int i=1;i<=9;i++)
{
for(int j=1;j<=i;j++)
{
printf("%d*%d=%-3d",j,i,i*j);
}
putchar(10);
}
}
void QiongJu()
{
int x,y,z;
//x:0--20
//y:0-33
//z:0--100
//x+y+z==100
//5*x+3*y+z/3==100
//z%3==0
for(int x=0;x<=20;x++)
for(int y=0;y<=33;y++)
for(int z=0;z<=100;z++)
if(x+y+z==100&&5*x+3*y+z/3==100&&z%3==0)
printf("x=%d y=%d z=%d\n",x,y,z);
}
//删除空格
void delete_space(char str[])
{
//“a b c def”
// 0123456789
// ij
int i,j;
int k=0;
for(i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
{
//把后面的值前移动
for(j=i+1;str[j]!='\0';j++)
{
str[j-1]=str[j];//前移
}
str[j-1]=0;
i--;
}
}
printf("k=%d\n",i);
puts(str);
}
void str_rev(char str[])
{
//先整体逆值
//yood good studg
//i j
// i j
int i=0,j=strlen(str)-1;
while(i<j)
{
char t=str[i];str[i]=str[j];str[j]=t;
i++;j--;
}
// "study good good\0"
// i
// k
// j
//单词逆值
i=0,j=0;
while(str[i]!='\0')
{
//找到空格结束
while(str[j]!=' '&& str[j]!='\0')
j++;
//k标志单词的最后一个下表
int k=j-1;
//交换i--k之间的字符
while(i<k)
{
char t=str[i];str[i]=str[k];str[k]=t;
i++;k--;
}
//j循环到跳过空格
while(str[j]==' ')
j++;
i=j;
}
puts(str);
}
//计算单词的个数
int world_count(char str[])
{
int count=0;
for(int i=0;str[i]!='\0';i++)
{
if(str[i]!=' '&&str[i+1]==' ' || str[i]!=' '&&str[i+1]=='\0')
count++;
}
return count;
}