华南师范大学

编程入门 行业动态 更新时间:2024-10-09 06:30:19

<a href=https://www.elefans.com/category/jswz/34/1744957.html style=华南师范大学"/>

华南师范大学

计算机管理课程实验 试题一
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;    
}

更多推荐

华南师范大学

本文发布于:2024-03-23 15:27:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1739778.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:华南师范大学

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!