判断最大值
定义一个无符号的整型数组,求数组中的最大值。|思路:int a1=10, a2=20, a3=5;两两相比,求最大值
#include <stdio.h>
int main(int argc, const char *argv[])
{
printf("请输入你的5个数\n");
unsigned int arr[5];
for(int i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
scanf("%u",&arr[i]);
unsigned int max=arr[0];
for(int n = 0;n<sizeof(arr)/sizeof(arr[0]);n++)
{
if(max<arr[n])
{
max=arr[n];
}
}
printf("%u是最大值\n",max);
return 0;
}
1.从终端获取一个字符串,判断该字符串中有几个小写字母,大写字母,数字字符,空格
#include <stdio.h>
int main(int argc, const char *argv[])
{
printf("请输入字符串:\n");
char str1[100];
gets(str1);
int a = 0;
int A = 0;
int t = 0;
int k = 0;
for(int i=0;i<sizeof(str1)/sizeof(str1[0]);i++)
{
if(str1[i] >= 65 && str1[i] <= 90)
{
A++;
}
else if(str1[i] >= 97 && str1[i] <= 122)
{
a++;
}
else if(32 == str1[i])
{
k++;
}
else if(str1[i] >= 48 && str1[i] <= 57)
{
t++;
}
else if(str1[i] == '\0')
{
break;
}
}
printf("有小写字母%d个,大写字母%d个,有空格%d个,有数字%d个\n",a,A,k,t);
return 0;
}
2.从终端获取一个字符串,要求将该字符串倒置存储。提示:可以新建一个辅助数组
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str[100000];
char str1[10000];
printf("请输入字符串:\n");
gets(str);
printf("%s\n",str);
int i = 0,j = 0,k = 0;
for(i = 0;str[i] != '\0';i++);
for(k = 0,j=i-1;k<i;k++,j--)
str1[k]=str[j];
str1[i] = '\0';
printf("%s\n",str1);
return 0;
}
不允许使用辅助数组>>>>>>>>>>>
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char str[] = "abcdefg";
//不使用辅助数组
int len = 0;
for(int i = 0;i != 0;i++)
len++; 求数据的有效长度
int i = 0;
int j = len; //初始化
for(i=0,j=len-1;i<len/2;i++,j--)
{
str[i] = str[i]^str[j];
str[j] = str[i]^str[j];
str[i] = str[i]^str[j];
}
str[i] = '\0';
printf("%s\n",str);
return 0;
}
3.从终端输入一个字符串,要求删除字符串中的空格字符。提示:可以新建一个辅助数组
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str[100000];
char str1[10000];
printf("请输入字符串:\n");
gets(str);
int i = 0;
int x = 0;
for(i = 0;str[i] != '\0';i++)
{
if(str[i] != ' ')
{
str1[x]=str[i];
x++;
}
}
str1[x] = '\0';
printf("%s\n",str1);
return 0;
}
不可以可以新建一个辅助数组>>>>>>>>>>>>>>>>>>>>
#include <stdio.h>
int main(int argc, const char *argv[])
{
printf("请输入你的字符串:\n");
char str[100] = "";
gets(str);
int i = 0,j = 0;
for(i = 0;i<sizeof(str);i++)
{
if(str[i] == ' ')
{
continue;
}
else
{
str[j] = str[i];
j++;
}
}
str[j] = '\0';
printf("%s\n",str);
return 0;
}
4.从终端获取两个字符串,判断两个字符串的有效长度是否相等
若有效长度相等,则比较两个字符串的大小。将大的字符串拼接到小的字符串后面若有效长度不相等,则将短的字符串拷贝到长的字符串中。
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char str[1000] = "";
char str1[1000] = "";
printf("输入\n");
gets(str);
printf("再输入\n");
gets(str1);
int a = 0;
a = strlen(str);
int b = 0;
b = strlen(str1);
printf("%d\n",b);
int d = 0;
d = a - b;
int c;
c = strcmp(str,str1);
if(a == b)
{
if(c >= 0)
strcat(str1,str);
else
strcat(str,str1);
}
else
{
if(d >= 0)
strcpy(str,str1);
else
strcpy(str1,str);
}
printf("str = %s,str1 = %s\n",str,str1);
return 0;
}
5.从终端获取一个字符串,判断该字符串中小写字母分别有几个。aabbbcc--->a有2个b有3个c有2个
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char str[10000]; // 输入的字符串
int i,num[256]={0}; // 统计次数时的变量
printf("请输入:\n");
scanf("%s",str);
// 统计次数
for(i=0;i<strlen(str);i++)
num[(int)str[i]]++;
// 显示结果
for(i=0;i<256;i++)
if(num[i] != 0)
printf("字符%c出现%d次\n",(char)i,num[i]);
return 0;
}
6. string函数的改写,不使用库函数实现string函数族的功能: strlen strcpy strcmp strcat
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char str[]="abcde";
/strlen//
int len = 0;
for(int i = 0;i<sizeof(str)/sizeof(str[0]) - 1;i++)
len++;
printf("字符串的有效长度是:%d",len);
return 0;
}
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char str1[100] = "abc";
char str2[100] = "";
/strcpy///
for(int i = 0;i<sizeof(str1)/sizeof(str1[0]);i++)
{
str2[i] = str1[i]; /将str1数组复制到str2
}
printf("str2[] = \"%s\"\n",str2);
return 0;
}
#include <stdio.h>
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str1[] = "abc";
char str2[] = "abd";
//strcmp///str1与str2比较并返回一个值
int a = 0;
for(int i = 0;i<sizeof(str1);i++)
{
if(str1[i] != str2[i] || str1[i] == str2[i] == '\0')
a = str1[i]-str2[i];
}
printf("%d\n",a);
return 0;
}
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char str1[] = "abc";
char str2[] = "def";
///strcat/
int len = 0;
for(int i = 0;i<sizeof(str1)/sizeof(str1[0])-1;i++)
len++;
for(int i = 0;i<sizeof(str2)/sizeof(str2[0]);i++)
{
str1[len] = str2[i];
len++;
}
printf("%s\n",str1);
return 0;
}