计算机管理课程实验 试题一
1.采用递归求解的方法,用倒序输出字符串系统,用户输入字符串程序运行后,将倒序输出
举例如下
Sample Input: abcdef
Sample Output: fedcba
程序如下
C语言版:
方法一
#include <iostream>
void p() {
char c;
//getchar()函数获取键盘输入的字符,以换行符结束
if((c=getchar()) != '\n') {
//以堆栈的方式将输入的字符串反向输出,堆栈:先进后出,
p();
}
//%c以字符的形式输出c的值
printf("%c",c);
}
int main() {
printf("请输入一个字符串:");
p(); //定义函数p
printf("\n");
return 0;
}
方法二
#include <stdio.h>
int main(){
int i=5;
int n;
//定义函数包含一个参数n的palin函数
void palin(int n);
printf("请输入5个字符\40:\40");
palin(i);
printf("\n");
}
void palin(int n){
char next;
//当else语句中的n值为0时执行
if(n<=1) {
//getchar()函数接受else语句由putchar(next)返回的结果
next=getchar();
//输入提示符
printf("相反顺序输出结果\40:\40");
//已1-5的顺序将字符输出
putchar(next);
}
else {
// getchar()函数接受键盘输入的字符,编号由5到1
next=getchar();
//编号递减
palin(n-1);
}
//putchar()函数把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。
putchar(next);
}
以上实例输出结果为:
请输入5个字符 : abcde
相反顺序输出结果 : edcba
C++版
#include<iostream>
using namespace std;
void p(){
char c;
if((c=getchar()) !='\n'){
p();
}
cout<<c;
}
int main(){
cout<<"请输入一个字符串:";
p();
cout<<endl;
return 0;
}
2.输入一行字符串,按如下规则加密:如果是英文字母则大写变小写、小写变大写对非英文字符保持不变。试写加密程序。
#include <iostream>
int main() {
char ch; //定义一个字符变量ch;
printf( "input characters:" );
while( (ch = getchar() ) != '\n' ) { // getchar()获取键盘输入的字符,以换行符结束;
if ( ch >= 'A' && ch <= 'Z' ) { //判断ch是否为大写字母
ch = ch - 'A' + 'a'; //若是大写字母则进行大写转小写的转换:ASCII码值减去A的ASCII值加a的ASCII值获得小写字母的值
}
else if ( ch >= 'a' && ch <= 'z' ) { //若不是大写判断ch是否为小写字母
ch = ch - 'a' + 'A'; //若是小写字母则进行小写转大写的转换:ASCII码值减去a的ASCII值加A的ASCII值获得大写字母的值
}
putchar( ch ); //若是数字则不进行转换进行输出,及输出转换后的字符;
}
}
C++形式
#include<iostream>
using namespace std;
int main(){
char ch; //定义一个字符变量ch;
cout<<"输入一个字符串:";
while( (ch=getchar()) != '\n'){ //当输入的字符不是回车的时候就继续循环;
if (ch >='A' && ch <='Z'){
ch=ch-'A'+'a'; //ch的值减A的值加a的值等于大写字母的值
}
else if (ch >='a' && ch <='z'){
ch=ch-'a'+'A'; //ch的值减a的值加A的值等于小写字母的值
}
putchar(ch); //putchar函数输出转换后的字符;
}
cout<<endl;
}
3.设计一个学生的学习系统,例如某学习小组有4位同学,学习五门课程求每个同学的平均分。
举例如下:
姓名 课程1 课程2 课程3 课程4 课程5 平均分
赵彬 80 82 91 68 77
张强 78 83 82 72 80
张帅 73 58 62 60 75
李莉 82 87 89 79 81
#include <iostream>
struct STU{ //定义结构体STU,和C++定义类STU(class STU)一样
char name[20];
int scores[5];
};
void OutputSTU(struct STU stu){ //函数OutputSTU(stu)实现部分
int total=0;
double avg;
int *scores = stu.scores; //定义成绩scores的指针
for(int i=0;i<5;i++){ //for循环,数组下标由0开始,故显示5项数据i的条件为i<5或i<=4,分别进行5门课程的成绩输入
total+=scores[i]; //等于total=total+scores[i];将5门课程的成绩相加并赋值给total
}
avg=total/5.0; //计算5门课程的平均成绩avg
printf("%s\t%d\t%d\t%d\t%d\t%d\t%0.2f\n", stu.name,scores[0],scores[1],scores[2],scores[3],scores[4],avg);
//%s输出字符串,%d输出整形数据,%f输出浮点型数据,%0.2f输出小数点后2位的有效数字,\t为tab符,\n为回车换行符,
}
int main (){
printf("姓名\t课程1\t课程2\t课程3\t课程4\t课程5\t平均分\n"); //显示首行,\t为tab符,\n为回车换行符
struct STU students[4] = { {"赵彬",{80,82,91,68,77}},{"张强",{78,83,82,72,80}},{"张帅",{73,58,62,60,75}},{"李莉",{82,87,89,79,81}}};
//定义结构体STU成员students数组,并进行初始化
for(int i=0;i<4;i++){ //for循环,数组下标由0开始,故显示4条数据i的条件为i<4或i<=3,分别进行4个学生的数据输入
struct STU stu = students[i]; //分别输入每一行数据
OutputSTU(stu); //定义函数OutputSTU(stu)
}
return 0;
}
C++方式
#include<iostream>
using namespace std;
class STU{ //定义STU类
public:
char name[20];
int scores[5];
};
void outputSTU(STU stu){
int total=0;
double avg;
int *scores = stu.scores;
for(int i=0;i<5;i++){
total+=scores[i]; //等于total=total+scores[i];
}
avg=total/5.0;
cout<<stu.name<<"\t"<<scores[0]<<"\t"<<scores[1]<<"\t"<<scores[2]<<"\t"<<scores[3]<<"\t"<<scores[4]<<"\t"<<("%.2f",avg)<<endl;
}
int main(){
cout<<"姓名"<<"\t"<<"课程1"<<"\t"<<"课程2"<<"\t"<<"课程3"<<"\t"<<"课程4"<<"\t"<<"课程5"<<"\t"<<"平均分"<<endl;
STU student[4]={
{"赵彬",{80,82,91,68,77}},
{"张强",{78,83,82,72,80}},
{"张帅",{73,58,62,60,75}},
{"李莉",{82,87,89,79,81}}
};
for(int i=0;i<4;i++){
STU stu=student[i];
outputSTU(stu);
}
return 0;
}
计算机管理课程实验 试题三
1.简单加密系统。对字符按如下规则加密:如果英文字母则大写变小写、小写变大写并且a->c、b->d 、•••、x->z、y->a、z->b;对非英文字母保持不变。试写加密程序。
#include <iostream>
#include <stdio.h>
char encode(char c) { //定义转换函数encode()及实现部分
if(c=='y' || c=='Y' || c=='z' || c=='Z') { //判断输入的字母是否为y、Y、z、Z,符号||为或运算符
c=c-24; // 等于c-=24;按照题意需将字母后移两位输出,先判断输入的字母是否为y、Y、z、Z,字母有26个,z后移两位为b,故c=z-24得b
}
else if(c>='a'&&c<='z' || c>='A'&&c<='Z') {
//判断是字母的大小写,c>='a'&&c<='z'判断是否为小写,c>='A'&&c<='Z'判断是否为大写,&为与运算符
c=c+2; //等于c+=2;字母后移2位
}
if(c>='a'&&c<='z') { //如果为小写
c=c-32; //等于c-=32; 小写字母减32得到大写字母
}
else if(c>='A'&&c<='Z') { //如果为大写
c=c+32; //等于c+=32; 大写字母加32得到小写字母
}
return c; //返回结果,若为数字则不进行变换直接返回结果
}
int main() {
char c;
printf("请输入一个字符串:\n");
while((c=getchar()) != '\n') { //while循环,getchar()获取键盘输入的字符,以换行符结束;
printf("%c", encode(c)); //%c以字符的格式输出encode(c)函数结果
}
printf("\n");
return 0;
}
C++版
#include<iostream>
#include<stdio.h>
using namespace std;
char encode(char c){
if(c=='y' || c=='Y' || c=='z' || c=='Z'){
c=c-24;
}
else if (c>='a'&&c<='z'||c>='A'&&c<='Z'){
c=c+2;
}
if(c>='a'&&c<='z'){
c=c-32;
}
else if (c>='A'&&c<='Z'){
c=c+32;
}
return c;
}
int main(){
char c;
cout<<"请输入一个字符串:";
while((c=getchar()) != '\n'){
cout<<("%c",encode(c));
}
cout<<endl;
return 0;
}
2.简单排序系统,键盘输入N个战士的身高,用比较法将其升序排序。
#include <iostream>
//总结:
// 1,总结思路,冒泡是目标值一直在移动,选择法是目标值固定但一直在比较
// 2,找到i和j 的关系
// 3,比较完大小,记得交换值
int main() {
int a[5],i=0,temp,j; //定义包含5个整形数据的数组a,整形数据i,temp,j
printf("请输入一列数字,程序会为您按从大到小进行排序\n");
for (i=0;i<5;i++) { //第一层for循环,循环输入5人的身高
scanf("%d",&a[i]); // scanf是格式输入函数,按用户指定的格式从键盘上把数据输入到指定的变量之中,将输入的数据赋值给数组a的首地址中
}
for (i=0;i<5;i++) { //第二层for循环
for (j=1;j<5-i;j++) { //第三层for循环
if (a[i]>a[i+j]) { //进行身高比较
temp=a[i+j]; //进行身高交换
a[i+j]=a[i];
a[i]=temp;
}
}
}
printf("排序结果:\n");
for (i=0;i<5;i++) { //升序输出结果,降序则修改为(i=4;i>=0;i--)
printf("%d ",a[i]);
printf(" ");
}
printf("\n");
return 0;
}
C++
#include <iostream>
using namespace std;
int main() {
int a[5],i=0,temp,j; //定义包含5个整形数据的数组a,整形数据i,temp,j
cout<<"请输入一列数字,程序会为您按从大到小进行排序"<<endl;
for (i=0;i<5;i++) { //第一层for循环,循环输入5人的身高
scanf("%d",&a[i]); // scanf是格式输入函数,按用户指定的格式从键盘上把数据输入到指定的变量之中,将输入的数据赋值给数组a的首地址中
}
for (i=0;i<5;i++) { //第二层for循环
for (j=1;j<5-i;j++) { //第三层for循环
if (a[i]>a[i+j]) { //进行身高比较
temp=a[i+j]; //进行身高交换
a[i+j]=a[i];
a[i]=temp;
}
}
}
cout<<"排序结果:"<<endl;
for (i=0;i<5;i++) { //升序输出结果,降序则修改为(i=4;i>=0;i--)
cout<<("%d ",a[i]);
cout<<" ";
}
cout<<endl;
return 0;
}
3.编写一个C程序,分解出6378的每一个位数
#include <iostream>
int main() {
int x=6378;
int a,b,c,d;
a=x%10000/1000; //分解出千位
b=x%1000/100; //分解出百位
c=x%100/10; //分解出十位
d=x%10; //分解出个位
printf("千位:%d\n", a);
printf("百位:%d\n", b);
printf("十位:%d\n", c);
printf("个位:%d\n", d);
}
C++版
#include<iostream>
using namespace std;
int main(){
int x=6378;
int a,b,c,d;
a=x%10000/1000;
b=x%1000/100;
c=x%100/10;
d=x%10;
cout<<"千位:"<<a<<endl<<"百位:"<<b<<endl<<"十位:"<<c<<endl<<"个位:"<<d<<endl;
}
/*
% 是整除取余数运算。
x%10000 就是取出 x 的 千百十个4位。
/ 是整除取商运算,
千百十个4位数/1000 就是取出 千位 的数值。
b,c,d 分别是 取出的 百位数,十位数,个位数。
例如: 9876543 %10000 /1000 得 6
9876543 %1000 /100 得 5 。。。
*/
管理信息系统(加考) 试题
1.用数组的方法输出斐波那契数列 1,2,3,5,8,13,21,34,55,89,.......写C程序,输出该数列的前N项
//总结注意观察数列的规律,从3开始前两项的和等于后一项
#include <iostream>
int main() {
printf ("请输入N的值(n<=100) 将列出前N项斐波那契数列的值:\n");
int n,i;
int arr[100]={1,2}; //定义数组arr包含100个数据,初始化前两个数据,分别为1 2
scanf("%d", &n); //接受键盘输入的整形数据数字,赋值给n的首地址地址
for(i=2;i<n;i++){
arr[i]=arr[i-1]+arr[i-2]; //斐波那契数列计算公式arr[i]=arr[i-1]+arr[i-2];从3开始显示斐波那契数列的特征
}
for(i=0;i<n;i++){ //按顺序输出
printf("%d\n", arr[i]); //%d以整形数据数输出
}
}
C++版
#include<iostream>
using namespace std;
int main(){
cout<<"请输入N的值(n<=100) 将列出前N项斐波那契数列的值:";
int n,i;
int arr[100]={1,2};
scanf("%d",&n);
for(i=2;i<n;i++){
arr[i]=arr[i-1]+arr[i-2];
}
for(i=0;i<n;i++){
cout<<arr[i]<<" ";
}
cout<<endl;
return 0;
}
2.迭代法求某正数a的平方根。已知求平方根的迭代公式为:x1=1/2(x0+a/x0)。
#include <iostream>
#include "math.h"
int main() {
printf("请输入N的值将求出前平方根:\n");
double n,x1,x2;
scanf("%lf", &n); //接收键盘输入%lf长浮点型数据,给n的首地址
x2=1.0;
while(true){
x1=x2;
x2=(x1+n/x1)/2.0;
if (fabs(x1-x2)<0.00001){ // fabs函数是一个求绝对值的函数,求出x的绝对值,比较x1和x2差的绝对值是否相等
printf("%.1f", x2); //%.1f保留一位有效数字输出x2
break; //跳出循环
}
}
return 0;
}
C++版
#include<iostream>
using namespace std;
int main(){
cout<<"请输入N的值将求出前平方根:";
double n,x1,x2;
scanf("%lf",&n);
x2=1.0;
while(1){
x1=x2;
x2=(x1+n/x1)/2.0;
if (fabs(x1-x2)<0.00001){
cout<<("%.1f",x2);
break;
}
}
cout<<endl;
return 0;
}
3.简易口令程序系统。用户进入某系统,从键盘回答口令有3次机会。3次中任何一次回答正确均可进入系统(显示“You are welcome! ”),否则不能进入系统(显示“I am sorry” )。试写C程序。
#include <iostream>
#include "string.h"
int main() {
printf("欢迎登录系统请输入您的登录密码 (123456)\n");
printf("password:\n");
int time = 3;
char pass[100];
while(time>0){
scanf("%s", &pass); //输入字符串数据
if (strcmp(pass, "123456") == 0){
/* strcmp函数string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。
基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数*/
break; //跳出循环
}
else{
time--; //自减1
printf("密码错误. 你还有%d次机会.\n", time);
}
}
if(time > 0){
printf("You are welcome! \n");
}
else{
printf("I am sorry \n");
}
return 0;
}
C++版
#include<iostream>
using namespace std;
int main(){
cout<<"欢迎登录系统请输入您的登录密码 (123456)"<<endl<<"password:";
int time=3;
char pass[100];
while(time>0){
scanf("%s",&pass);
if(strcmp(pass,"123456")==0){
break;
}
else{
time--;
cout<<"密码错误. 你还有"<<time<<"次机会.";
}
}
if(time>0){
cout<<"You are welcome!";
}
else{
cout<<"I am sorry!";
}
cout<<endl;
return 0;
}
1.求圆的面积的简易系统。键盘输入圆的半径,求它的面积。本例要求通过指针变量访问实型变量。
#include <iostream>
using namespace std;
int main() {
cout << "请输入半径r长度:" ;
int *pr; //定义指针pr
int r; //定义整形数据半径r
double s; //定义双精度浮点型数据s
cin >> r; //接收键盘输入的数据给r
pr=&r; //使指针pr指向r的首地址
s=(*pr)*(*pr)*3.14; //圆的面积格式s=r2*3.14
cout << "该圆的面积为:" << s << endl;
return 0;
}
2.问题描述:利用函数的递归调用求x的n次方。
【简要分析】递归有两个阶段,第一个阶段是“回推”,欲求x的n次方,回求x的n-1次方,再加求x的n-2次方•••••,当回推到x 的0次方时,此时能够得到x的0次方为1,就不再回推了;然后进入第二阶段“递推”,由x的0次方开始,求x的1次方,x的2次方,直到x的n次方。
#include <iostream>
using namespace std;
int f(int x,int n){ //定义包含2个参数的函数f
if(n==0){ //先判断输入的n是否为0,若为0则直接输出1
return 1;
}
return x * f(x, n-1); //递归实现方法,如x=2,n=3 次方法等价与2*2*2
}
int main() {
int x,n;
cout << "计算的n 次方?" << endl;
cout << "请输x的值:";
cin >> x;
cout << "请输n的值:";
cin >> n;
cout << x << "^" << n << "=" << f(x, n) << endl; //f(x,n)调用函数f,进行递归计算。
return 0;
}
3.简易学生成绩管理系统
设学生成绩表如下图,要求输入N位学生信息后,能输出每位学生的平均分、最高分,最后按学生的平均分降序排列后输出,并将原始数据存储到文件stu_grade.txt中。
姓名 Java Maths Asp
Zhoujie 83 73 67
Lijing 68 72 86
Liuliting 58 82 60
Chenchao 86 66 92
Mali 73 90 82
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class Student{ //定义Student类
public:
char name[20];
int java;
int maths;
int asp;
double avg;
//Student(){} //默认构造函数
void setData(char *n="",int j=0,int m=0,int a=0){ //带默认值的setData函数初始化name,java,maths,asp
strcpy(name, n); // strcpy把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char* ,将键盘输入的字符给n的地址中
java = j;
maths = m;
asp = a;
avg = (j + m + a) / 3.0;
}
};
Student createStudent(){ //定义Student类函数createStudent()
char name[20]; //函数中定义字符类型name
int java,maths,asp; //函数中定义整形数据java,maths,asp
cout << "学生姓名:" ;
cin >> name;
cout << "学生java成绩:" ;
cin >> java;
cout << "学生maths成绩:" ;
cin >> maths;
cout << "学生asp成绩:" ;
cin >> asp;
Student stu = Student(); //调用Student()构造函数,构造stu对象
stu.setData(name,java,maths,asp); //调用setData函数,初始化stu
return stu;
}
int main() {
Student stu[3]; //定义包含3个数据的Student类对象stu数组
int i;
for(i=0;i<3;i++){
cout << "No." << i+1 << endl;
stu[i] = createStudent(); //将createStudent()函数初始化得到的结果赋值给stu[i]
}
printf("姓名\tJava\tMathe\tASP\tAvg\n");
for(i=0;i<3-1;i++){ //for循环进行编号,
for(int j=i+1;j<3;j++){
if (stu[i].avg < stu[j].avg){ //判断大小进行交换位置
Student stuTmp;
stuTmp = stu[i];
stu[i] = stu[j];
stu[j] = stuTmp;
}
}
}
ofstream outfile; //建立输出流outfile
outfile.open("student.txt"); //建立输出流outfile和文件student.txt之间的关联
for(i=0;i<3;i++){
Student s = stu[i];
char *buf = new char[1024]; //在内存中创建一个1024字节大小的空间*buf
sprintf(buf, "%s\t%d\t%d\t%d\t%f\n", s.name, s.java, s.maths, s.asp, s.avg);
// sprintf是字符串格式化命令, 主要功能是把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串
cout << buf; //
outfile << buf; //使用输出流outfile将指针buf所指字符串流向文件
}
return 0;
}
管理信息系统(加考) 试题?
题目:求1+2!+3!+...+20!的和。
解析:题目为累加和如1+2!+3!等于1+(1*2)+(1*2*3)
#include <stdio.h>
int main() {
int i;
long double sum,mix; //定义双精度长整形sum,mix
sum=0,mix=1; //赋值
for (i=1;i<=20;i++) { //for循环,当i=20时结束
mix=mix*i;
sum=sum+mix;
}
printf("%0.2Lf\n",sum); //%0.2Lf长浮点数保留两位有效数字输出
}
2021年真题
计算机信息管理课程实(A)
请编写程序,按照每一题给出的运行结果示例进行输入和输出。运行结果示例中以符号结尾的数据表示是键盘输入的。
1. 设圆半径r=2,圆柱的高h=3,pi=3.14,请设计一个函数floatcylinder(r, h)求圆柱体积(公式为c=r*r*h*pi)
#include <stdio.h>
#include <math.h>
double floatcylinder(double r, double h); //定义圆柱体积函数
int main()
{
double r,h;
printf("r="); //输入半径r
scanf("%lf", &r);
printf("h="); //输入高度h
scanf("%lf", &h);
printf("C=%.2lf\n",floatcylinder(r, h));
return 0;
}
//圆柱体积函数
double floatcylinder(double r, double h)
{
double pi,c;
printf("pi="); //输入圆周率pi
scanf("%lf", &pi);
c=r*r*h*pi;
return c;
}
期望运行结果示例:
r=2, h=3, pi=3.41
c = 37.68
2.将一个数组中的值按逆序输出。
#include <stdio.h>
int main() {
int array[5] = {100,32,30,3,1};
int loop;
for(loop = 4; loop >= 0; loop--)
printf("%d ", array[loop]);
printf("\n");
return 0;
}
期望运行结果示例:
100,32,30,3,1
逆序后为:
1,3,30,32,100
3. 有3个整数a,b,c,由键盘输入,输出其中最大的数
#include <stdio.h>
int main(){
int a, b, c, max;
printf("输入的数字为:");
scanf("%d %d %d", &a, &b, &c);
if (a > b){
if (a > c)
max = a;
else
max = c;
}
else{
if (b > c)
max = b;
else
max = c;
}
printf("最大的数字为:%d\n", max);
return 0;
}
期望运行结果示例:
输入的数字为:2 4 5
最大的数字为:5
输入的数字为:4 4 2
最大的数字为:4
4.有3个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入3个学生数据,要求打印出3门课总平均成绩(即所有成绩相加的和除以用来相加的成绩总个数),以及最高分的学生的总成绩。
#include<iostream>
using namespace std;
struct student{
char id[2];
char name[2];
int score1;
int score2;
int score3;
};
int main(){
student stu[2];
int n=3,s1=0,s2=0,s3=0,s=0,m;
for(int i=0;i<n;i++){
cout<<"输入学生"<<i+1<<endl;
cout<<"学号:";
cin>>stu[i].id;
cout<<"姓名:";
cin>>stu[i].name;
cout<<"分数1:";
cin>>stu[i].score1;
cout<<"分数2:";
cin>>stu[i].score2;
cout<<"分数3:";
cin>>stu[i].score3;
}
for(int i=0;i<n;i++)
{
//进行总成绩的比较
if(s<stu[i].score1+stu[i].score2+stu[i].score3)
{
s=stu[i].score1+stu[i].score2+stu[i].score3;
m=i;
}
//每科成绩相加
s1+=stu[i].score1;
s2+=stu[i].score2;
s3+=stu[i].score3;
}
cout<<"总平均成绩为:";
cout<<(s1+s2+s3)/9<<endl;
cout<<"最高总成绩的学生为:"<<stu[m].name<<",总分:"<<stu[m].score1+stu[m].score2+stu[m].score3<<endl;
return 0;
}
期望运行结果示例:
输入学生1:
学号:101
姓名:wang
分数1:83
分数2:90
分数3:89
输入学生2:
学号:102
姓名:deng
分数1:81
分数2:82
分数3:97
输入学生3:
学号:103
姓名:li
分数1:93
分数2:90
分数3:87
总平均成绩为:88
最高总成绩的学生为:li,总分:270
计算机信息管理课程实(B)
请编写程序,按照每一题给出的运行结果示例进行输入和输出。运行结果示例中以符号结尾的数据表示是键盘输入的。
1.输入一个摄氏温度,要求输出华氏温度。转换公式为:华氏温度=(摄氏温度*1.8)+32
#include<stdio.h>
void main(){
float C,F;
printf("InputF:");
scanf("%f",&C);//输入华氏度
F=(C*1.8)+32;//换算公式
printf("F=%.1f\n",F);//输出结果
}
期望运行结果示例:
请输入一个摄氏温度:24
华氏温度为:75.2
2.统计一个整数二维数组a[3][3]中数字为“1“的个数。
#include<stdio.h>
void main(){
int a[3][3]={{12,3,1},{24,1,3},{31,6,2}};//这个可以自己修改
int num=1;//这个就是要找的数字了。
int count=0,i,j;
for(i=0;i<4;i++){
for(j=0;j<5;j++){
if(a[i][j]==num)
count++;
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
printf("数字为“%d“的个数有:%d个\n",num,count);
}
期望运行结果示例:
12 3 1
24 1 3
31 6 2
数字为“1“的个数有:4个
输入一个整型二维数组a[3][3]的各个元素和一个整数,判断数组中是否含有该整数?
#include <stdio.h>
int main(void){
int a[3][3];
int i = 0, j = 0,num=0;
printf("输入一个整型二维数组a[3][3]的各个元素:\n");
for (i = 0; i < 3; i++){
for (j = 0; j < 3; j++){
scanf("%d", &a[i][j]);
}
}
printf("输入一个整数:\n");
scanf("%d", &num);
for (i = 0; i < 3; i++){
for (j = 0; j < 3; j++){
if (num == a[i][j]){
printf("数组中含有该整数\n");
break;
}
}
if (j < 3){
break;
}
}
if (i == 3){
printf("数组中不含有该整数\n");
}
return 0;
}
3.用递归的方法求n!
#include<stdio.h>
int fac(int n);
int main(){
int n;
int y;
printf("输入的数字为:");
scanf("%d",&n);
y=fac(n);
printf("%d!=%d\n",n,y);
return 0;
}
int fac(int n){
int f;
if(n<0)
printf("n<0,输入数据错误");
else if(n==0||n==1)
f=1;
else
f=fac(n-1)*n;
return(f);
}
𝐮!{𝐮 (𝐮=𝐮,𝐮)𝐮(𝐮−.(𝐮>𝐮)
期望运行结果示例:
输入的数字为:8
8!=40320
4.对候选人得票的统计程序。设有3个候选人,最终只有一个人能当选为领导。今有10人参加投票,从键盘先后输入这10个人所投候选人的名字,要求最后输出各个候选人的得票情况,以及当选人姓名(得票最多的为当选人,候选人结构体:姓名,票数)。
期望运行结果示例:
wu
li
li
wu
wu
li
liu
liu
liu
li
* 问题描述: 对候选人的票的统计程序。设:有3个候选人,最终只能有一个候选人当选为领导,今有10个人参加投票,从键盘先后输入10个人所锁头候选人的名字要求最后输出各候选人的得票结果
#include<iostream>
using namespace std;
struct Person { //声明结构体类型Person
char name[20];
int count;
};
int main(){
cout<<"候选人一共3个人,分别为wu,li,liu以名字的个数计票."<<endl<<"现在开始投票:"<<endl;
Person leader[3]={"wu",0,"li",0,"liu",0};
int i,j;
char leader_name[20]; //为投票人所选的姓名
for(i=0;i<10;i++){
cin>>leader_name;//先后输入10张票上所写的姓名
for(j=0;j<3;j++){
if(strcmp(leader_name,leader[j].name)==0){ //将票上姓名与3个候选人的姓名比较
leader[j].count++; //与某一候选人的姓名相同就给他加一票
}
}
}
cout<<endl;
for(i=0;i<3;i++){
cout<<leader[i].name<<":"<<leader[i].count<<endl; //输出3个候选人的姓名和票数
cout<<endl;
}
return 0;
}
题目考点总结
递归程序设计 重点在于找出程序的递进方式 与 跳出递归的条件
字符串的赋值
#include <string.h>
strcpy(a, b); // 将b赋值给a
字符串的对比 (引入字符串函数库 )
#include <string.h>
strcmp(a, b) == 0 //判断两个字符串是否相同,相同为strcmp输出0
文件输入输出
#include "fstream.h"
ofstream outfile;
outfile.open("student.txt");
outfile << "输入文件的内容\n" ;
Outfile.close()
排序算法 建议掌握最简单的冒泡排序
取出一个整数的每一个位数 有多重实现方式 字符串分割or 整除取余数
建议
每个试题难易程度不同 具体抽到什么题目听天由命
C++ 兼容C的写法 实际考试中只要程序能调通不管用哪种写法都可以,实际考试中根据具体情况用最简单的编码方式实现 (只要程序能跑通 怎么简单怎么来)
提前把代码敲几遍 做到不看的情况下能靠自己的理解敲出来
具体使用的软件 目前能确定的是win7 visual c++ 6.0 可以提前熟悉一下debug 操作 ,建议用最垃圾的开发环境练题 不要用太新的集成开发环境,避免上考场之后用会老版本 操作上用不习惯
除了以上的题目 建议把 菜鸟教程 C语言经典100例 练习一下 熟悉常用的编码方式
附:
《计算机信息管理课程实验》考纲
考试所需语言是C++程序设计语言。
考试知识点有:
C++语言基本语法知识;
控制结构(顺序结构、循环结构和选择结构)的使用;
一维数组和二维数组的操作(数组元素值之和,下标为奇数的元素之和,所有数组元素的平均值等);
找出各行(列)的特殊数(最大值、最小值、素数、完全平方数等);
函数的定义、调用,以及函数的递归定义和调用;
指针与数组,字符串与指针、函数与指针的用法(例如长方体面积计算(含成员:长、宽、高)等);
结构体类型、枚举类型的定义和应用(例如学生成绩管理(含成员:学号、姓名、C++、SQL、VB)、密码管理系统、计费管理系统等)
《管理信息系统(加考)》考纲
考试所需语言是C++或C程序设计语言。
考试知识点有C/C++语言基本语法知识、顺序结构if switch case的用法,
二重循环嵌套的各种情况 for-for、for-while、while-while、while-for等,
break、continue语句在多重循环中的作用;
二维数组(随机产生)按行(列)排序;
特殊元素(周边、对角线)操作;
找出各行(列)的特殊数(素数、完全平方数等);
排序算法 (比较法、交换法,冒泡法)统计:
各行(列)特殊数据的个数(素数、完全平方数等)。
成绩管理系统:统计单科平均分、个人平均分、排名次、补考人数等。指针与数组的应用。
函数递归的综合应用、长方体面积计算(含成员:长、宽、高);
结构休与枚举类型的综合应用,例如学生成绩管理(含成员:学号、姓名、C、SQL、VB)、密码管理系统、计费管理系统等。
掌握凯撒密码系统的原理及其应用。
对角线操作
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[3][3],m=0,n=0;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
cin>>a[i][j];
for(int i=0;i<3;i++)
{
m+=a[i][i];
n+=a[i][2-i];
}
cout<<m<<' '<<n<<endl;
return 0;
}
#include <stdio.h>
int main()
{
int wolf[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
int i,j;
int sum=0;
int left=0,right=0;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++){
if(i==j)//
left+=wolf[i][j];
}
}
for(i=0;i<4;i++)
{
for(j=4;j>=0;j--){
if(i+j==3)
right+=wolf[i][j];}
}
sum=(right+left);
printf("对角线元素之和是:%d\n",sum);
return 0;
}