1.输入一个字符串,删除空格(eg:hello world ! !!------------>helloworld!!!)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char a[100];
printf("please enter a:");
gets(a);//从键盘获取字符串
int i,j,index;
int length=strlen(a);
for(i=0;i<length;i++)
{
if(a[i]==' ')
{
index=i;
for(j=index+1;j<=length;j++,index++)
{
a[index]=a[j];
}
length--;
--i;
}
}
puts(a);
return 0;
}
2.输入一个字符串,实现单词的逆置(eg:good good study----------->study good good)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char a[100];
printf("please enter a:");
gets(a);
int i=0,j=strlen(a)-1;
char temp1;
while(i<j)//单词的整体逆置
{
temp1=a[i];
a[i]=a[j];
a[j]=temp1;
i++;
j--;
}
puts(a);
i=0,j=0;
char temp2;
while(a[i]!='\0')
{
while(a[j]!=' ' && a[j]!='\0')//如果a[j]的值不为空格时,继续往后走
{
j++;//让a[j]往后走
}
int k;//定义变量,让它接收a[j]为空格时的该单词的最后一个字符
k=j-1;
while(i<k)//逆置第一个空格出现前的第一个单词
{
temp2=a[i];
a[i]=a[k];
a[k]=temp2;
i++;
k--;
}
while(a[j]==' ')//如果此时a[j]为空格,去寻找下一个单词
{
j++;//让a[j]继续后往走,定位到下一个单词的开头
}
i=j;//让下标i初始值定义到下一个单词的开头
}
puts(a);
return 0;
}
3.输入一个字符串,计算单词的个数(eg:good morning teacher------->输出3个单词)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char str[100];
gets(str);
int i,count;
for(i=0;i<strlen(str);i++)
{
if((str[i]!=' ' && str[i+1]==' ') || (str[i]!=' ' && str[i+1]=='\0'))//如果当前字符不为空格,但是当前字符的下一个字符为空格或者'\0'时,此时就算是一个单词
{
count++;
}
}
printf("出现了%d个单词\n",count);
return 0;
}
4.穷举算法:“鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int rooster,hen,chick;
for(rooster=0;rooster<100/5;rooster++)
{
for(hen=0;hen<(100-rooster*5)/3;hen++)
{
chick=100-rooster-hen;
if(rooster*5+hen*3+chick/3==100 && chick%3==0)
printf("公鸡有%d只,母鸡有%d只,鸡雏有%d只\n",rooster,hen,chick);
}
}
return 0;
}
5.打印九九乘法表
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int i,j;
for(i=0;i<9;i++)
{
for(j=0;j<=i;j++)
{
printf("%d*%d=%2d",j+1,i+1,(j+1)*(i+1));
}
putchar(10);
}
return 0;
}
6.循环输入n个元素,交换数组中最大值和最小值
#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 arr[n];
int i;
for(i=0;i<n;i++)
{
printf("please enter arr value:");
scanf("%d",&arr[i]);
}
int max=0,min=0;
for(i=1;i<n;i++)
{
if(arr[max]<arr[i])
{
max=i;
}
if(arr[min]>arr[i])
{
min=i;
}
}
printf("交换前的数组为:");
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
putchar(10);
int temp=arr[max];
arr[max]=arr[min];
arr[min]=temp;
printf("交换后的数组为:");
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
putchar(10);
return 0;
}
7.输入字符串,输入变量k的值,将字符循环右移k位(eg:abcdefg----------->右移2位后:fgabcde)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char str[20];
printf("please enter str value:");
gets(str);
int k;
printf("please enter var k:");
scanf("%d",&k);
int len=strlen(str);
int i=0,j=len-1;
char temp;
while(i<j)//先整体逆置
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
i++;
j--;
}
i=0;
int m;
m=k-1;
while(i<m)
{
temp=str[i];
str[i]=str[m];
str[m]=temp1;
i++;
m--;
}
while(k<len)
{
char temp2=str[k];
str[k]=str[len-1];
str[len-1]=temp2;
k++;
len--;
}
puts(str);
return 0;
}
8.定义字符串并输入,请实现对字符串每个字符的升序排序
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char str[20];
printf("please enter:");
gets(str);
int i,j;
for(i=0;i<strlen(str)-1;i++)//使用冒泡排序进行升序排序,排几轮
{
for(j=0;j<strlen(str)-1-i;j++)//每轮排几个数
{
if(str[j]>str[j+1])
{
int t=str[j];
str[j]=str[j+1];
str[j+1]=t;
}
}
}
printf("升序排序后的字符串为:");
puts(str);
return 0;
}
9.输入5个学生的姓名,请输出姓名中的最大值
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char str[5][50];
char max[50]="";
int i;
for(i=0;i<5;i++)
{
gets(str[i]);
}
strcpy(max,str[0]);
for(i=1;i<5;i++)
{
if(strcmp(max,str[i])<0)
{
strcpy(max,str[i]);
}
}
printf("name_max=");
puts(max);
return 0;
}