- 1.1 本题要求编写程序,从给定字符串中查找某指定的字符。
输入格式:
输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。
输出格式:
如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。
输入样例1:
m
programming
输出样例1:
index = 7
输入样例2:
a
1234
输出样例2:
Not Found
#include <stdio.h>
#include <string.h>
int main(void)
{
char find;
scanf("%c\n",&find); //必须加\n
char arr[81]; //80会报错,不够用的
gets(arr);
int len = strlen(arr);
int flag = 1;
for(int i=len-1;i>=0;i--)
{
if(arr[i]==find)
{
printf("index = %d",i);
flag = 0;
break;
}
}
if(flag) printf("Not Found");
return 0;
}
- 1.2 本题要求将给定的n个整数从大到小排序后输出。
输入格式:
输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。
输出格式:
在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。
输入样例:
4
5 1 7 6
输出样例:
7 6 5 1
#include <stdio.h>
int main(void)
{
int n;
scanf("%d",&n);
int arr[100] = {0};
for(int i=0; i<n; i++)
{
scanf("%d",&arr[i]);
}
//冒泡
// for(int j=0; j<n-1; j++)
// {
// for(int i=0; i<n-j-1; i++)
// {
// int t;
// if(arr[i]<arr[i+1])
// {
// t=arr[i];
// arr[i] = arr[i+1];
// arr[i+1] = t;
// }
// }
// }
//选择
for(int j=0; j<n; j++)
{
for(int i=j+1; i<n; i++)
{
int t;
if(arr[j]<arr[i])
{
t=arr[j];
arr[j] = arr[i];
arr[i] = t;
}
}
}
for(int i=0; i<n; i++)
{
printf("%d",arr[i]);
if(i!=n-1) printf(" ");
}
return 0;
}
- 1.3 本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
输入样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
#include <stdio.h>
#include <string.h>
int main(void)
{
char arr[81];
gets(arr);
int len = strlen(arr);
for(int i=0; i<len; i++)
{
for(int j=i+1; j<len; j++)
{
if(arr[i]>arr[j])
{
int t;
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
}
for(int i=0; i<len; i++)
{
if(arr[i]!=arr[i-1])
printf("%c",arr[i]);
}
return 0;
}
- 1.4 本题要求编写程序,统计并输出某给定字符在给定字符串中出现的次数。
输入格式:
输入第一行给出一个以回车结束的字符串(少于80个字符);第二行输入一个字符。
输出格式:
在一行中输出给定字符在给定字符串中出现的次数。
输入样例:
programming is More fun!
m
输出样例:
2
#include <stdio.h>
#include <string.h>
int main(void)
{
char arr[81];
gets(arr);
int len = strlen(arr);
char ch;
scanf("%c",&ch);
int count = 0;
for(int i=0; i<len; i++)
{
if(arr[i]==ch) count++;
}
printf("%d",count);
return 0;
}
- 1.5 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N−1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对N个数的排序。
本题要求对任意给定的K(<N),输出扫描完第K遍后的中间结果数列。
输入格式:
输入在第1行中给出N和K(1≤K<N≤100),在第2行中给出N个待排序的整数,数字间以空格分隔。
输出格式:
在一行中输出冒泡排序法扫描完第K遍后的中间结果数列,数字间以空格分隔,但末尾不得有多余空格。
输入样例:
6 2
2 3 5 1 6 4
输出样例:
2 1 3 4 5 6
#include <stdio.h>
int main(void)
{
int n,k;
scanf("%d %d",&n,&k);
int arr[101] = {0};
for(int i=0; i<n; i++)
{
scanf("%d",&arr[i]);
}
for(int i=0; i<k; i++)
{
for(int j=0; j<n-1-i; j++)
{
if(arr[j]>arr[j+1])
{
int temp;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(int i=0; i<n; i++)
{
printf("%d",arr[i]);
if(i!=n-1) printf(" ");
}
return 0;
}
- 1.6 本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出单词个数。
输入样例:
Let’s go to room 209.
输出样例:
5
#include <stdio.h>
#include <string.h>
int main(void)
{
char arr[1000];
gets(arr);
int len = strlen(arr);
int count = 0;
for(int i=0; i<len; i++)
{
if(arr[i]!=' ' && arr[i+1]==' ')
count++;
if(arr[i]!=' ' && arr[i+1]=='\0')
count++;
}
printf("%d",count);
return 0;
}
- 1.7 本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。
注意:题目保证最大和最小值都是唯一的。
输入格式:
输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。
输出格式:
在一行中顺序输出交换后的序列,每个整数后跟一个空格。
输入样例:
5
8 2 5 1 4
输出样例:
1 2 5 4 8
#include <stdio.h>
int main(void)
{
int n;
scanf("%d",&n);
int arr[100] = {0};
scanf("%d",&arr[0]);
int max,min;
max = min = arr[0];
for(int i=1; i<n; i++)
{
scanf("%d",&arr[i]);
}
for(int i=0; i<n; i++)
{
if(arr[i]<min) min = arr[i];
if(arr[i]>max) max = arr[i];
}
for(int i=0; i<n; i++)
{
if(arr[i]==min)
{
int temp;
temp = arr[i];
arr[i] = arr[0];
arr[0] = temp;
}
}
for(int i=0; i<n; i++)
{
if(arr[i]==max)
{
int temp;
temp = arr[i];
arr[i] = arr[n-1];
arr[n-1] = temp;
}
}
for(int i=0; i<n; i++)
printf("%d ",arr[i]);
return 0;
}
- 1.8 本题要求编写程序,对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。
输入格式:
输入为一个以“#”结束的字符串(不超过30个字符)。
输出格式:
在一行中输出大小写转换后的结果字符串。
输入样例:
Hello World! 123#
输出样例:
hELLO wORLD! 123
#include <stdio.h>
#include <string.h>
int main(void)
{
char arr[32]; //31报错 不够用
gets(arr);
int len = strlen(arr);
for(int i=0; arr[i]!='#'; i++)
{
if(arr[i]>=65 && arr[i]<=90) arr[i] += 32;
else if(arr[i]>=97 && arr[i]<=122) arr[i] -= 32;
printf("%c",arr[i]);
}
return 0;
}
- 1.9 本题要求统计一个整型序列中出现次数最多的整数及其出现次数。
输入格式:
输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。
输出格式:
在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。
输入样例:
10 3 2 -1 5 3 4 3 0 3 2
输出样例:
3 4
#include <stdio.h>
int main(void)
{
int arr[1001] = {0};
int times[1001] = {0};
int n,k,max = 0;
scanf("%d",&n);
for(int i=0; i<n; i++)
{
scanf("%d",&arr[i]);
}
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if(arr[i]==arr[j]) times[i]++;
}
if(times[i]>max)
{
max = times[i];
k=i;
}
}
printf("%d %d",arr[k],max);
return 0;
}
- 1.10 本题要求提取一个字符串中的所有数字字符(‘0’……‘9’),将其转换为一个整数输出。
输入格式:
输入在一行中给出一个不超过80个字符且以回车结束的字符串。
输出格式:
在一行中输出转换后的整数。题目保证输出不超过长整型范围。
输入样例:
free82jeep5
输出样例:
825
#include <stdio.h>
#include <string.h>
int main(void)
{
char arr[81];
gets(arr);
int sum = 0;
for(int i=0; i<strlen(arr); i++)
if(arr[i]>='0' && arr[i]<='9')
sum = sum*10 + arr[i]-'0';
printf("%d",sum);
return 0;
}