C语言基础综合编程

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值