C语言程序设计实验答案数组、指针与字符串
C语言程序设计实验指导含答案

C语言程序设计实验指导含答案实验一:C语言程序设计基础实验内容:本实验主要以C语言的基础语法为主,通过一些简单的示例和练习来帮助学生熟悉C语言的基本概念和语法规则。
实验步骤:1. 编写一个简单的C程序,输出"Hello, World!"。
要求程序能够顺利编译并执行。
答案:#include <stdio.h>int main(){printf("Hello, World!");return 0;}2. 基于上一题的程序,修改代码,要求程序输入一个整数,并将其乘以2输出。
答案:#include <stdio.h>int main(){int num;printf("请输入一个整数:");scanf("%d", &num);printf("乘以2的结果为:%d", num * 2);return 0;}3. 编写一个C程序,输入一个圆的半径,计算并输出其面积和周长。
要求保留2位小数。
答案:#include <stdio.h>#define PI 3.14159int main(){float radius;printf("请输入圆的半径:");scanf("%f", &radius);float area = PI * radius * radius;float circumference = 2 * PI * radius;printf("圆的面积为:%.2f\n", area);printf("圆的周长为:%.2f\n", circumference);return 0;}实验二:循环和判断语句实验内容:本实验主要通过不同的练习来帮助学生熟悉和掌握C语言中的循环和判断语句的使用方法。
《C语言程序开发》实验报告和参考答案

《C语言程序开发》实验报告和参考答案1实实验报告课程名称:C语言程序开发学生姓名:学生学号:专业班级:指导教师:实验日期:2目录实验一循环结构程序设计(一)求1+2+3+.......+100,1100nn(二)输出100~200之间的不能被3整除的数。
实验二数组及其应用(一)有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
(二)输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
实验三函数及其应用(一)有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁。
问第4个学生岁数,他说比第3个学生大2岁。
问第3个学生,又说比第2个学生大2岁。
问第2个学生,说比第1个学生大2岁。
最后问第1个学生,他说是10岁。
请问第5个学生多大。
(二)用选择法对数组中10个整数按由小到大排序,一维数组名作函数参数。
实验四指针及其应用(一)将若干字符串按字母顺序(由小到大)输出。
(二)有a个学生,每个学生有b门课程的成绩。
要求在用户输入学生序号以后,能输出该学生的全部成绩。
用指针函数来实现。
3实验一循环结构程序设计实验题目:(一)求1+2+3+.......+100,1100nn(二)输出100~200之间的不能被3整除的数。
实验目的1.掌握循环语句的执行过程及用法2.初步掌握循环程序设计的基本技巧3.掌握用while语句,do-while语句和for语句实现循环的方法4.掌握多重循环的使用(一)实验步骤1.题目分析2.源程序代码3.运行结果(二)实验步骤:1.题目分析源程序代码3.运行结果4实验二数组及其应用实验题目:(一)有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
(二)输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
实验目的1.掌握一维数组的定义及其元素的引用方法2.掌握利用一维数组实现一些常用算法的基本技巧3.掌握二维数组的定义及其应用4.掌握字符数组和字符串函数的使用5.掌握有关二维数组的基本编程技巧(一)实验步骤:1.题目分析2.源程序代码:3.运行结果(二)实验步骤:1.题目分析2.源程序代码3.运行结果5实验三函数及其应用实验题目:(一)有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁。
C实验报告答案

C程序设计初步一、实验目的(1) 熟悉C语言程序的运行环境(VC++ 。
(2) 掌握C语言程序的上机步骤,了解运行C程序的方法。
(3) 掌握C语言程序的书写格式和C语言程序的结构。
二、实验内容(均要求给出运行结果)1.程序改错题(1) 以下程序实现计算x×y的值并将结果输出。
请改正程序中的错误。
#include ""void main()/**********FOUND**********/{ int x=y=4;z=x*y;/**********FOUND**********/printf("z=%d/n", Z);}答案:=======(答案1)=======int x=,4,y=4,z;=======(答案2)=======printf("z=%d\n", z);(2) 以下程序实现输入圆的半径,求圆的周长。
请改正程序中的错误。
#include ""void main(){ int r;float l;printf("Enter r:");scanf("%d", &r);/**********FOUND**********/l=2πr/**********FOUND**********/printf("l=%d\n",l);}答案:=======(答案1)=======l=2**r;=======(答案2)=======printf("l=%f\n", l);2.程序填空题(1) 下面程序能对两个整型变量的值进行交换,请填空。
#include ""void main(){ int a=3,b=4,t;t=a;/***********SPACE***********/【】;/***********SPACE***********/【】;printf("a=%d,b=%d\n",a,b);}答案:=======(答案1)=======a=b=======(答案2)=======b=t(2) 下面程序不用第三个变量,实现两个数的对调操作。
全国计算机二级C语言程序设计讲义 数组的指针和字符串的指针

1.数组与地址
对数组的首地址加上偏移量x就可以得到其它 元素的地址。 例: &a[1] 表示数组元素a[1]的地址 等价于 a+1、 p+1 &a[x] 表示数组元素a[x]的地址 等价于 a+x、 p+x
2.数组元素的访问
下标法: 用 a[i] 的形式存取数组元素。 地址法: 用 *(a+i)的形式存取数组元素。 指针法: 用指针变量p指向数组的首地址,然后通 过移动指针存取数组元素。 如 p=a, p+i。
例:
/* 用字符数组实现字符串操作 */ main( ) { char str[]="Welcome to study C !"; int i; printf("%s\n",str); 程序运行结果为: for (i=0;i<=7;i++) Welcome to study C ! printf("%c",str[i]); Welcome printf("\n"); }
例 输入一串小写字符将其转换为大写字符
main() { int i; char a[100]; printf(“Input\n”); scanf(“%s”,a); utol( a ) ; printf( "%s\n", a ); } utol( char *x )
{ int i;
for ( i=0; *(x+i)!='\0'; i++ )
第16讲 数组的指针和字符串的指针
一、数组的指针
1.数组与地址 2.数组元素的访问
二、字符串指针
1.字符串指针的定义
2.字符指针与字符数组的区别
C++ 实验数组、指针与字符串实验报告

贵州大学实验报告学院:计算机科学与信息专业:通信工程班级:实验内容1. 编写一个函数,统计一个英文句子中字母的个数,在主程序中实现输入、输出。
2.编写函数reverse(char *s)的倒序递归程序,使字符串s倒序。
实验数据1、代码如下:#include<iostream>#include <string>using namespace std ;int main(){string Str;char ch ;int i=0,j=0;cout << "input str:" <<endl;getline(cin , Str );for ( i=0;i<Str.length();i++ ){if ( Str[i] >='a' && Str[i]<='z' || Str[i] >='A' && Str[i]<='Z' ) j++;}cout << "str="<<Str<<endl ;cout << "The number is:" << j <<endl ;system("pause");return 0;}运行结果:2、代码和运行结果:实验总结1、这次试验让我了解了在C++程序中的输入输出和字符串的统计。
2、掌握了一点点递归的方法。
3、通过这次试验觉得自己还是有很多不足,对基础知识掌握不牢。
指导教师意见签名:年月日注:各学院可根据教学需要对以上栏木进行增减。
表格内容可根据内容扩充。
C语言实验答案

C语言实验答案实验1: C语言基础1. a) 此程序的输出结果是:10 15 20int x = 10;printf("%d ", x++);printf("%d ", ++x);printf("%d", x++);b) 解释:- 在第一个printf语句中,x的值被打印后才执行自增操作,所以输出结果为10;- 在第二个printf语句中,x先自增再打印,所以输出结果为15;- 在第三个printf语句中,x先打印再自增,所以输出结果为20。
2. 此程序的输出结果是:6int a = 10, b = 4, c = 6;printf("%d", ++c + a / --b);解释:- 在表达式中,++c表示先将c自增1,--b表示先将b自减1;- a/--b会先执行除法操作,即10/3,结果为3;- ++c + 3的结果为9;- 因此,最终的输出结果为6。
实验2: 控制结构1. a) 此程序的输出结果是:odd even odd even odd evenfor (int i = 1; i <= 6; i++) {if (i % 2 == 0) {printf("even ");} else {printf("odd ");}}b) 解释:- 在for循环中,i从1逐渐增加到6;- 当i为奇数时,输出"odd ",当i为偶数时,输出"even "; - 因此,最终的输出结果为"odd even odd even odd even"。
2. a) 此程序的输出结果是:1 3 5 7 9int i = 0;while (i < 10) {i++;if (i % 2 == 0) {continue;}printf("%d ", i);}b) 解释:- 在while循环中,i从0逐渐增加到9;- 当i为偶数时,遇到"continue"语句,跳过后续的代码,继续下一次循环;- 当i为奇数时,打印i的值;- 因此,最终的输出结果为"1 3 5 7 9"。
《C语言程序设计》第5章数组、字符串、指针

相当于声明了5个整型变量
说明: ① 数组的所有元素的数据类型都是相同的。 ② 数组取名规则应符合标识符的规定,数组 名不能与同一函数中其它变量名相同: int a; float a[10]; 是错误的。
③ C语言中规定数组的下标从0开始,方括号 中常量表达式表示数组元素的个数。
④ 不能在方括号中用变量来表示元素的个数, 但是可以是符号常数或常量表达式。例如: int n=5,a[n]; 是错误的。
二维数组在内存的存放顺序是“先行后列”
a[0][0] a[0][1] a[0][2] a[0][3] a[1][0]
…
a[2][3]
5.3.2 二维数组元素的引用
二维数组的元素的引用形式为: 数组名[下标][下标] 使用二维数组的情况举例: 学生多门功课的成绩,如: a[100][3]可以用来记录100个学生3门功 课的成绩。 矩阵,如: a[3][3]可以用来记录3×3的矩阵。一个 数组元素正好存放一个矩阵的元素。
5.2.2 一维数组的初始化
1、数组声明时初始化 在编译阶段进行的。这样将减少运行时间, 提高效率。 数组初始化的一般形式为: 类型符 数组名[常量表达式]={值,值…值}; 例如: int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0; a[1]=1;... a[9]=9;
…
a[9]
#include <stdio.h> 声明有10个元素 void main() 的一维数组a {int n,i; float s=0, ave, a[10]; a[0] a[1] … a[9] for(i=0;i<10;i++) a[i] { scanf("%f",&a[i]); a[i] s=s+a[i]; } ave=s/10; for(i=0;i<10;i++) a[i] a[i] if (a[i]>ave) printf("%f ",a[i]); }
c程序设计实验参考答案

c程序设计实验参考答案在计算机科学领域中,C程序设计是一门重要的课程,通过实验来加深对C语言的理解和应用,提高编程技巧和问题解决能力。
本文将提供一些C程序设计实验的参考答案,帮助学生更好地完成实验任务。
1. 实验一:基础语法练习实验目的:熟悉C语言的基础语法,掌握变量定义、运算符使用和基本IO操作等。
```c#include <stdio.h>int main() {int a = 5, b = 3;int sum, product;sum = a + b;product = a * b;printf("The sum of a and b is %d\n", sum);printf("The product of a and b is %d\n", product);return 0;}```2. 实验二:条件语句和循环结构实验目的:学习和掌握if-else语句、switch-case语句以及while和for循环的基本用法。
```c#include <stdio.h>int main() {int score;printf("Please enter your score: ");scanf("%d", &score);if (score >= 90) {printf("Excellent!\n");} else if (score >= 80) {printf("Good job!\n");} else if (score >= 70) {printf("Keep it up!\n");} else {printf("You need to work harder!\n");}int i;for (i = 1; i <= 10; i++) { if (i % 2 == 0) {printf("%d ", i);}}printf("\n");int j = 1;while (j <= 10) {if (j % 2 != 0) {printf("%d ", j);}j++;}printf("\n");return 0;}```3. 实验三:数组和字符串实验目的:熟悉数组和字符串的定义、初始化和基本操作,学习使用数组和字符串解决问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验06 数组、指针与字符串(4学时)(第6章数组、指针与字符串)一、实验目的二、实验任务6_1(习题6-25)编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。
6_2(习题6-26)使用动态内存分配生成动态数组来重新完成上题(n阶方阵),使用指针实现函数的功能。
6_3 编程实现两字符串的连接。
要求使用字符数组保存字符串,不要使用系统函数。
6_4 使用string类声明字符串对象,重新实现上一小题。
6_5(习题6-27)声明一个Employee类。
其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。
display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。
6_6(习题6-27)声明包含5个元素的对象数组,每个元素都是Employee 类型的对象。
6_7 修改实验4中的people(人员)类。
具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。
其中“出生日期”声明为一个“日期”类内嵌子对象。
用成员函数实现对人员信息的录入和显示。
要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。
在测试程序中声明people类的对象数组,录入数据并显示。
三、实验步骤1.(编程,习题6-25)编写矩阵转置函数,输入参数为3×3整型数组。
使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入输出。
程序名:lab6_1.cpp。
参考运行结果:★程序及运行结果://lab6_1.cpp#include<iostream>using namespace std;void move(int matrix[][3]){int temp;for(int i=0;i<3;i++)for(int j=0;j<i;j++){temp=matrix[i][j];matrix[i][j]=matrix[j][i];matrix[j][i]=temp;}}void main(){int i,j,mat[3][3];cout<<"输入3×3矩阵"<<endl;for(i=0;i<3;i++){cout<<"第"<<i+1<<"行:";for(j=0;j<3;j++) cin>>mat[i][j];}cout<<"\n输入的3×3矩阵为:"<<endl;for(i=0;i<3;i++){for(j=0;j<3;j++)cout<<mat[i][j]<<" ";cout<<endl;}move(mat);cout<<"转置后的矩阵为:"<<endl;for(i=0;i<3;i++){for(j=0;j<3;j++)cout<<*(*(mat+i)+j)<<" ";//指针形式cout<<endl;}}2.(编程,习题6-26)编写n×n阶矩阵转置函数,参数为整型指针。
使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。
通过调试功能观察指针的内容及其所指的对象中的内容。
程序名:lab6_2.cpp。
注:可使用一维动态数组,或二维动态数组。
★程序及运行结果:(1) 使用一维动态数组表示方阵。
//lab6_2.cpp#include<iostream>#include<iomanip>using namespace std;void move(int *matrix,int n){//矩阵为整型指针,对应一维数组int temp;for(int i=0;i<n;i++)for(int j=0;j<i;j++){temp=matrix[i*n+j];matrix[i*n+j]=matrix[j*n+i];matrix[j*n+i]=temp;}}void main(){int i,j,n,*mat;cout<<"输入方阵的阶数:";cin>>n;mat=new int[n*n];cout<<"输入"<<n<<"×"<<n<<"矩阵"<<endl;for(i=0;i<n;i++){cout<<"第"<<i+1<<"行:";for(j=0;j<n;j++) cin>>mat[i*n+j];//数组形式}cout<<"\n输入的矩阵为:"<<endl;for(i=0;i<n;i++){for(j=0;j<n;j++)cout<<setw(4)<<mat[i*n+j];cout<<endl;}move(mat,n);cout<<"转置后的矩阵为:"<<endl;for(i=0;i<n;i++){for(j=0;j<n;j++)cout<<setw(4)<<*(mat+i*n+j);//指针形式cout<<endl;}delete []mat;}(2) 使用二维动态数组表示方阵。
(参考实验提示)3.(编程)实现两字符串的连接。
声明字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。
程序名:lab6_3.cpp。
用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。
// 字符串的结束标志'\0'参考运行结果:★程序及运行结果://lab6_3.cpp#include<iostream>using namespace std;void strLL(char *a,char *b,char *c);void main(){int i;char a[10],b[10],c[20];cout<<"输入一个字符串a:"; cin>>a;cout<<"显示内存中的字符串a:";for(i=0;i<10;i++){if(a[i]) cout<<a[i]; //a[i]不为0else{cout<<"\'\\0\'";//转义break;}}cout<<endl;cout<<"\n输入另一个字符串b:"; cin>>b;cout<<"显示内存中的字符串b:";cout<<b<<"\'\\0\'"<<endl;strLL(a,b,c);cout<<"\n显示内存中的连接字符串c:";for(i=0;i<20;i++){if(c[i]) cout<<c[i];else{ cout<<"\'\\0\'"; break; }}cout<<endl;}void strLL(char *a,char *b,char *c){int i,j;for(i=0;a[i];i++) c[i]=a[i];//循环直到a[i]为0for(j=0;b[j];i++,j++) c[i]=b[j];c[i]=0;}4.(编程)使用string类声明字符串对象,实现两字符串的连接。
在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。
程序名:lab6_4.cpp。
★程序及运行结果://lab6_4.cpp#include<string>//使用C++中的string#include<iostream>using namespace std;void main(){string s1,s2;cout<<"输入字符串s1:";cin>>s1;cout<<"输入字符串s2:";cin>>s2;s1+=s2;cout<<"s1+s2 = "<<s1<<endl;}5.(编程,习题6-27)声明Employee类并应用。
在employee.h文件中声明Employee类。
Employee类具有姓名、街道地址、城市和邮编等私有数据成员,都可以用字符数组来表示。
成员函数:构造函数用来初始化所有成员数组,对字符数组的赋值可以使用字符串拷贝函数strcpy(char *, char *name);display() 使用cout显示姓名、街道地址、城市和邮编等属性;change_name() 改变类中表示姓名属性的字符数组类型的数据成员。
在主程序中声明这个类的对象并对其进行操作。
程序名:lab6_5.cpp。
参考运行结果:★程序及运行结果://lab6_5employee.h#include<cstring>//使用C中的string#include<iostream>using namespace std;class Employee{private:char name[10],street[20],city[10],mail[7];//姓名、街道、城市、邮编public:Employee(char *n,char *s,char *c,char *m);void display();void change_name(char *n);};Employee::Employee(char *n,char *s,char *c,char *m){strcpy(name,n); strcpy(street,s);strcpy(city,c); strcpy(mail,m);}void Employee::display(){cout<<"姓名:"<<name<<endl;cout<<"街道:"<<street<<endl;cout<<"城市:"<<city<<endl;cout<<"邮编:"<<mail<<endl;}void Employee::change_name(char *n){ strcpy(name,n); }//lab6_5.cpp#include"lab6_5employee.h"void main(){Employee emp("张山","海甸三西路13号","海口市","570228");emp.display();emp.change_name("李世");cout<<endl;emp.display();}6.(编程,习题6-27)使用上一小题中的Employee类声明对象数组emp[5]。