当前位置: 首页 > news >正文

华清远见25072班C++学习假期10.5作业

1、数组练习

  1. 选择题

1.1、若有定语句int a[3][6]; ,按在内存中的存放顺序a 数组的10个元素是D

  1. a[0][4] B) a[1][3] C)a[0][3] D)a[1][4]

1.2有数组 int a[5] = {10,20,30,40,50}, 以下表达式编译错误是___A__ ___B____。

A) a ++ ;

B) a[5] = 20 ;

C) a + 20 ;

D) (a-3, a[3]) ;

1.3以下误的定义语句是 ___C____

Aint x[][3] = {{0},{1},{1,2,3}};

Bint x[4][3] = {{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

Cint x[4][] = {{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

Dint x[][3] = {1,2,3,4};

1.4设int i,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句

   for(i=0;i<3;i++)

   printf(″%d, ″,x[i][2-i]);

的输出结果是 D

A)1, 4, 7 B)1, 5, 9 C)3, 6, 9 D)3, 5, 7

1.5表达式“sizeof(int [1][2])/sizeof(int)”的值为__A___。

A) 2 B) 3 C) 4 D) 5

1.6有以下程序

#include main()

{ char s[]="012xy\07s34f4w2";

int i,n=0;

for(i=0;s[i]!=0;i++)

if(s[i]>='0'&&s[i]<='9')

n++;

printf("%d\n",n);

}

程序运行后的输出结果是_____C_______

A)0 B)3 C)7 D)8

1.7有以下程序

#include <stdio.h>

main( )

{ char s[ ]=wstuv; printf(%c\n,*s+2);

}

程序运行后的输出结果是C

At B) tuv Cy D)出错

1.8 数组 int a[5] = {10, 20, 30, 40,50}, 有以下语句,其输出___C____

printf(%d\n, *(&a +1) );

A) 20 B) 30 C) 随机值 D)编译报错

1.9 有以程序

# include <stdio.h>

int main()

{ int s[12]={1,2,3,4,4,3,2,1,1,1,2,3}, c[5]={0,0,0,0,0}, i ;

for(i=0;i<12;i++) c[s[i]]++ ;

for(i=1;i<5;i++) printf(%d,c[i]); printf(\n);

}A

A) 4 3 3 2 B) 2 3 4 4

C) 1 2 3 4 D ) 4, 4, 2 3

1.10 有数组 int a[3][4] = {10,20,30,40,50,60,70,80,90,100,110,120},执行以下语句输出的是_______D________

printf(%d\n, *(*a+2) + 3 );

A) 语句有错 B) 120 C) 30 D) 33

  1. 填空题

2.1、有以下程序

#include <stdio.h>

main( )

{ int i,n[ ]={0,0,0,0,0};

for(i=1;i<=4;i++)

{n[i]=n[i-1]*3+1;

printf(%d,n[i]);}

}

程序运行后输出结果是 _____141340_____

2.2、执行以程序的输出结果_3715 .

#include <stdio.h>

int main()

{ int i,n[4]={1,0,0,0};

for(i=1;i<=3;i++)

{ n[i]=n[i-1]*2+1; printf("%d",n[i]); }

}

2.3、下面程序运行的结果为___358______。

main()

{

int x[5],i;

x[0] = 1;x[1] = 2;

for(i = 2;i<5;i++) x[i] = x[i-1] + x[i-2];

for(i = 2;i<5;i++) printf(“%d”,x[i]);

}

2.4、有以下程序

#include <sthio.h>

int main()

{

int arr[] = {1,3,5,7,2,4,6,8}, i, start ;

scanf(%d”, &start);

for(i=0,i<7,i+=2)

printf(%d,arr[(start+i)%5]);

}

若在程序运行时输整数 10 <>,则输出结果为____726___

2.5下面程序运行的结果为___54820______。

#include "stdio.h"

main()

{ int i,j,a[]={0,2,8,4,5};

printf("\n");

for(i=1;i<=5;i++)

{ j=5-i;

printf("%2d",a[j]);

}

}

2.6有以下程序

#include <stdio.h>

int main()

{ int n[2],i,j;

for(i=0;i<2;i++) n[i]=0; for(i=0;i<2;i++)

for(j=0;j<2;j++) n[j]=n[i]+1;

printf(%d\n,n[1]);

}

程序运行后的输出结果是 3

3、编程题

3.1、 一个班10个学生的成绩,存放在一个一维数组中,要求找出其中成绩最高的学生的成绩和该生的序号。试编程。(试着用下标法和地址法两种方法表示数组)

#include <iostream>
using namespace std;
const int STUDENT_COUNT = 10; // 学生数量
// 下标法实现
void findMaxByIndex()
{int scores[STUDENT_COUNT];int maxScore, maxIndex;// 输入成绩cout << "【下标法】请输入" << STUDENT_COUNT << "个学生的成绩:" << endl;for (int i = 0; i < STUDENT_COUNT; ++i) {cin >> scores[i];}// 初始化最高成绩和索引maxScore = scores[0];maxIndex = 0;// 遍历数组(下标访问)for (int i = 1; i < STUDENT_COUNT; ++i){if (scores[i] > maxScore){maxScore = scores[i];maxIndex = i;}}cout << "下标法结果:最高成绩为" << maxScore << ",对应学生序号(从1开始):" << maxIndex + 1 << endl;
}// 地址法实现(指针访问)
void findMaxByAddress()
{int scores[STUDENT_COUNT];int maxScore, maxIndex;int* p; // 指针用于访问数组// 输入成绩(指针访问)cout << "【地址法】请输入" << STUDENT_COUNT << "个学生的成绩:" << endl;for (p = scores; p < scores + STUDENT_COUNT; ++p){cin >> *p; // 通过指针解引用赋值}// 初始化最高成绩和索引maxScore = *scores; // 等价于scores[0]maxIndex = 0;// 遍历数组(指针访问)for (p = scores + 1; p < scores + STUDENT_COUNT; ++p){if (*p > maxScore) {maxScore = *p;maxIndex = p - scores; // 指针差值即下标}}cout << "地址法结果:最高成绩为" << maxScore << ",对应学生序号(从1开始):" << maxIndex + 1 << endl;
}
int main() {findMaxByIndex();findMaxByAddress();return 0;
}

3.2、有5个学生上4门课程,要求输入全部学生的各门课程成绩,然后输出各门课程的平均成绩,并按照各个学生的平均成绩排序(成绩最高的学生排在数组最前面,最低学生排在数组最后面的行) (试着用下标法和地址法两种方法表示数组)

#include <iostream>
#include <iomanip>
using namespace std;const int STUDENT_COUNT = 5;  // 学生数量
const int COURSE_COUNT = 4;   // 课程数量// 学生信息结构体
struct Student
{int scores[COURSE_COUNT]; // 各科成绩float avg;                // 个人平均成绩
};// 下标法实现
void solveByIndex()
{Student students[STUDENT_COUNT];float courseAvg[COURSE_COUNT] = {0}; // 每门课的平均分// 1. 输入成绩并计算个人平均分和课程总分cout << "\n【下标法】请输入" << STUDENT_COUNT << "个学生的" << COURSE_COUNT << "门成绩(每行" << COURSE_COUNT << "个整数):" << endl;for (int i = 0; i < STUDENT_COUNT; ++i){float sum = 0; // 个人总分for (int j = 0; j < COURSE_COUNT; ++j){cin >> students[i].scores[j]; // 下标访问成绩sum += students[i].scores[j];courseAvg[j] += students[i].scores[j]; // 累加课程总分}students[i].avg = sum / COURSE_COUNT; // 计算个人平均分}// 2. 计算每门课程的平均分for (int j = 0; j < COURSE_COUNT; ++j){courseAvg[j] /= STUDENT_COUNT;}// 3. 按个人平均分降序排序(冒泡排序,下标访问)for (int i = 0; i < STUDENT_COUNT - 1; ++i){for (int j = 0; j < STUDENT_COUNT - 1 - i; ++j){if (students[j].avg < students[j + 1].avg){swap(students[j], students[j + 1]); // 交换学生信息}}}// 4. 输出结果cout << "【下标法】课程平均分:" << endl;for (int j = 0; j < COURSE_COUNT; ++j){cout << "第" << j + 1 << "门课:" << fixed << setprecision(1) << courseAvg[j] << "  ";}cout << "\n按个人平均分降序排序后的学生成绩:" << endl;for (int i = 0; i < STUDENT_COUNT; ++i){cout << "学生" << i + 1 << "成绩:";for (int j = 0; j < COURSE_COUNT; ++j){cout << students[i].scores[j] << " ";}cout << ",平均分:" << students[i].avg << endl;}
}// 地址法实现(指针访问)
void solveByAddress()
{Student students[STUDENT_COUNT];float courseAvg[COURSE_COUNT] = {0};Student* pStu; // 指向学生的指针int* pScore;   // 指向成绩的指针// 1. 输入成绩并计算个人平均分和课程总分(指针访问)cout << "\n【地址法】请输入" << STUDENT_COUNT << "个学生的" << COURSE_COUNT << "门成绩(每行" << COURSE_COUNT << "个整数):" << endl;for (pStu = students; pStu < students + STUDENT_COUNT; ++pStu){float sum = 0;pScore = pStu->scores; // 指向当前学生的成绩数组for (int j = 0; j < COURSE_COUNT; ++j){cin >> *(pScore + j); // 指针访问成绩sum += *(pScore + j);courseAvg[j] += *(pScore + j);}pStu->avg = sum / COURSE_COUNT;}// 2. 计算每门课程的平均分for (int j = 0; j < COURSE_COUNT; ++j){courseAvg[j] /= STUDENT_COUNT;}// 3. 按个人平均分降序排序(冒泡排序,指针访问)for (pStu = students; pStu < students + STUDENT_COUNT - 1; ++pStu){for (Student* p = students; p < students + STUDENT_COUNT - 1 - (pStu - students); ++p){if (p->avg < (p + 1)->avg){swap(*p, *(p + 1)); // 交换指针指向的学生信息}}}// 4. 输出结果(指针访问)cout << "【地址法】课程平均分:" << endl;for (int j = 0; j < COURSE_COUNT; ++j){cout << "第" << j + 1 << "门课:" << fixed << setprecision(1) << courseAvg[j] << "  ";}cout << "\n按个人平均分降序排序后的学生成绩:" << endl;for (pStu = students; pStu < students + STUDENT_COUNT; ++pStu){cout << "学生" << (pStu - students) + 1 << "成绩:";pScore = pStu->scores;for (int j = 0; j < COURSE_COUNT; ++j){cout << *(pScore + j) << " ";}cout << ",平均分:" << pStu->avg << endl;}
}int main() {solveByIndex();solveByAddress();return 0;
}

2、牛客网

http://www.dtcms.com/a/446406.html

相关文章:

  • 【系统分析师】2024年下半年真题:综合知识-答案及详解(回忆版)
  • 网站代码的重点内容是什么wordpress 批量建站
  • 密码学系列 - 零知识证明(ZKP) - NTT运算
  • 商城网站建设明细自己弄个网站怎么赚钱
  • Android 系统下 getevent 工具
  • 学院网站建设方案软件开发自学入门教程
  • Deflate在线解压工具(支持无zlib头)
  • win7下winlogon.exe调试记录
  • 网站 做 app开发wordpress插件开发
  • 昆明做网站哪家便宜怎么让付费网站免费
  • 《C++进阶之C++11》【智能指针】(下)
  • 桐城网站定制软件开发的学校有哪些
  • 海南省工程建设定额网站简单网站首页
  • K230基础-特征检测
  • 宁波网站建设内容深圳网站开发建设服务公司
  • CTFHub 信息泄露通关笔记11:HG泄露(4种方法)
  • 网站采用什么方法建设wordpress获取文章信息
  • 上海网站建设公司招聘wordpress用手机写博客
  • 网站为什么要更新wordpress保护插件
  • Maixcam学习笔记-寻址色块和直线
  • 您正在 GUI 下运行 Fcitx,但是 fcitx-config-qt 未被找到。该软件包名称通常为 fcitx5-configtool。现在将打开配置目录
  • 速通web全栈开发
  • 网站建设虚拟服务器赣州新闻最新消息
  • 33.搜索旋转排序数组;153.寻找旋转排序数组中的最小值 4. 寻找两个正序数组的中位数
  • 4准则下,2可加模糊测度满足单调性和有界性约束。假设没有任何其他先验信息,基于Marichal熵最大的目标,求解莫比乌斯参数。
  • 果洛州wap网站建设公司wordpress用哪个国外空间
  • 【IMX6ULL驱动学习】INPUT子系统
  • 上海做网站建设公司代理注册公司流程和费用
  • spring6学习笔记
  • 资料代做网站网站建设维护合同