题目描述一个合法的身份证号码由 17 位地区、日期编号和顺序编号加 1 位校验码组成。校验码的计算规则如下:
首先对前 17 位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对 11 取模得到值 Z;最后按照以下关系对应 Z 值与校验码 M 的值:
1234Z:0 1 2 3 4 5 6 7 8 9 10M:1 0 X 9 8 7 6 5 4 3 2
现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。
输入输入第一行给出正整数 N(≤100)是输入的身份证号码的个数。随后 N 行,每行给出 1 个 18 位身份证号码。
输出按照输入的顺序每行输出 1 个有问题的身份证号码。这里并不检验前 17 位是否合理,只检查前 17 位是否全为数字且最后 1 位校验码计算准确。如果所有号码都正常,则输出 All passed。
样例输入12345432012419880824005612010X19890101123411010819671130186637070419881216001X
样例输出1231 ...
题目描述输入一个正整数 n,定义一个包含 n 个元素的动态一维数组(double 型),输入 n 个元素,对这 n 个元素按照从小到大顺序排序,输出排序以后的各个元素。
输入输入:元素个数 n 以及这 n 个元素
输出输出:这 n 个元素按照从小到大顺序排序以后的结果(各元素之间有一个空格)
样例输入1253.2 1.4 8.5 4.6 2.2
样例输出11.4 2.2 3.2 4.6 8.5
提示123456789101112131415161718192021#include<iostream>using namespace std;int main() { int n; cin>>n; double arr[n]; for(int i=0; i<n; i++) cin>>arr[i]; for(int i=0; i<n-1; i++) { for(int j=0; j<n-i-1; j++) { if(arr[j]>arr[j+1]) { double tmp = ...
题目描述读入两个字符串,并将其连接起来的新字符串输出。要求不要使用 strcat 函数。
输入两行不包含空格的字符串。保证每个字符串的长度不超过 100。
输出将第 2 行的字符串连接在第 1 行字符串之后的新字符串。请注意行尾输出换行。
样例输入12I am a program.This is a program.
样例输出1I am a program.This is a program.
提示12345678#include<iostream>using namespace std;int main() { string str1,str2; getline(cin, str1); getline(cin, str2); cout<<str1+str2<<endl;}
题目描述写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
输入只有一行,表示输入的字符串。请注意输入的字符串可能有空格。保证字符串的长度不超过 100。
输出将读入的字符串反序后的字符串。请注意行尾输出换行。
样例输入1This is a program.
样例输出1.margorp a si sihT
提示123456789101112131415161718#include<iostream>#include<cstring>using namespace std;void reverse(char a[]){ char b[101]; for(int i=0,j=strlen(a);j>0;i++,j--) b[j-1]=a[i]; for(int i=0;i<strlen(a);i++) a[i]=b[i];}int main(){ char a[101]; gets(a); reverse(a); puts(a); cout<<endl; return 0;} ...
题目描述用递归的方法求出 n!的值。
输入一个正整数 n,保证 n 不超过 10。
输出n!的值。请注意行尾输出换行。
样例输入15
样例输出1120
提示1234567891011#include<iostream>using namespace std;int fac(int x){ if(x==1) return 1; else return x*fac(x-1);}int main(){ int n; cin>>n; cout<<fac(n)<<endl;}
题目描述给定一个一维数组,包含 10 个学生的成绩,求出平均分、最高分和最低分。要求使用将数组传至函数进行操作的方法。
输入只有一行,包含 10 个用空格隔开的实数,表示 10 个学生的成绩。保证所有成绩不小于 0,不大于 100。
输出输出平均分、最高分和最低分,用空格隔开,小数点后保留 2 位小数。请注意行尾输出换行。
样例输入1100 56 78 98.5 76 87 99 67.5 75 97
样例输出183.40 100.00 56.00
提示123456789101112131415161718192021#include<iostream>using namespace std;void calc(float a[10]){ cout.precision(2); float average=0,sum=0,max=0,min=100; for(int i=0;i<10;i++){ sum+=a[i]; average=sum/10; if(a[i]>max) ...
题目描述定义包含 10 个整型数的一维数组,从键盘输入 10 个整数,然后再输入一个待查找的整数 x,判断如果能在数组中找到 x,则输出 x“ is found at ”、下标,否则输出 x“ is not found”。
说明:如果数组中找到多个与 x 相同的数,则只输出找到的首个元素。
输入输入:第 1 行输入 10 个整数
第 2 行输入 1 个待查找的整数
输出输出:x “ is found at”、下标(数据之间空 1 格)
或者:输出 x“ is not found”
样例输入1223 14 45 26 90 85 67 48 62 6585
样例输出185 is found at 5
提示1234567891011121314151617#include<iostream>using namespace std;int main() { int arr[10],x,isFound=0; for(int i=0; i<10; i++) cin>>arr[i]; cin>>x; for(int i=0; i<10 ...
题目描述读入两个字符串 s1 和 s2,比较这两个字符串。若 s1>s2,输出一个正数;若 s1=s2,输出 0;若 s1<s2,输出一个负数。输出的非零值应该是相比较的两个字符串第一个不相同位置的字符 ASCII 差值,例如”And”和”Aid”比较,根据第 2 个字符的比较结果,应输出 5。要求不要使用 strcpy 和 strcmp 函数。
输入两行字符串。保证每个字符串的长度不超过 100。
输出两个字符串的比较结果。请注意行尾输出换行。
样例输入12I am a program.I am not a program.
样例输出1-13
提示123456789101112131415161718#include<iostream>using namespace std;int main() { int d=0,i; char s1[100]; char s2[100]; cin.getline(s1,sizeof(s1)); cin.getline(s2,sizeof(s2)); for(i=0; d==0||i<100; ...
题目描述编写一个函数,由实参传来一个字符串,统计这个字符串中字母、数字、空格和其他字符的个数。在主函数中输入字符串,并在主函数中输出上述结果。
输入一行字符,可能包含空格。保证字符串的长度不超过 100。
输出分别输出这行字符中的英文字母、空格、数字和其他字符的个数,用空格隔开。请注意行尾输出换行。
样例输入1What are you doing? 123456
样例输出115 6 4 1
提示答案1234567891011121314151617#include<iostream>using namespace std;void count(string str){ int a(0),b(0),c(0),d(0); for(int i=0;i<str.length();i++){ if(str[i]>='A'&&str[i]<='z') a++; else if(str[i]>='0'&&str[i]<='9 ...
题目描述给定两个一维数组,分别内含 n 个和 m 个学生的成绩,分别求出其平均成绩并输出。
输入第一行有两个用空格隔开的整数 n 和 m,表示分别有 n 个和 m 个学生。第二行有 n 个用空格隔开的实数,表示 n 个学生的成绩。第三行有 m 个用空格隔开的实数,表示 m 个学生的成绩。保证 n 和 m 均不超过 50,且所有成绩大于等于 0 且小于等于 100。
输出两个用空格隔开的实数,分别为第一组的 n 个学生和第二组的 m 个学生的平均成绩,小数点后保留 2 位小数。请注意行尾输出换行。
样例输入12310 5100 56 78 98.5 76 87 99 67.5 75 9798 85 79 80.5 99.5
样例输出183.40 88.40
提示12345678910111213141516171819#include<iostream>using namespace std;float average(float *p,int x){ float sum=0; for(int i=0;i<x;i++,p++) sum+ ...

