首页 > 编程语言 >实验1 C语言输入输出和简单程序编写

实验1 C语言输入输出和简单程序编写

时间:2023-10-07 14:22:49浏览次数:32  
标签:main int scanf 输入输出 程序 C语言 printf 编写 include

实验1 C语言输入输出和简单程序编写

一、实验目的

1. 会使用C语言程序开发环境(vs2010/devc++等),能熟练、正确使用它们编写、编译、运行、调

试C程序

2. 知道C程序结构和编码规范,能正确使用

3. 能正确、熟练使用C语言输入输出函数:scanf(), printf(), getchar(), putchar()

4. 能灵活、组合使用基本数据类型、运算符和输入输出语句编程解决简单计算/应用问题

二、实验准备

实验前,请围绕以下内容复习教材第1-3章以下相关内容:

1. 一个完整的c程序结构和书写规范

2. C程序的编写、编译、运行、调试方法

3. C语言中标识符命名规则、常量、变量;运算符、表达式及其混合计算规则

4. C输入输出函数用法

三、实验内容

1. 实验任务 1

在c开发环境下,编写、编译、运行一个简单程序,实现在屏幕上打印一个字符小人。

task1.c

// 打印一个字符小人
#include <stdio.h>
int main()
{
printf(" O \n");
printf("<H>\n");
printf("I I\n");
return 0 ;
}

运行后,观察打印出的字符小人。

尝试编写程序task1_1.c,使得可以在垂直方向上打印出两个字符小人。

#include <stdio.h>
  int main(){
  printf(" O \n");
  printf("<H>\n");
  printf("I I\n");
  printf(" O \n");
  printf("<H>\n");
  printf("I I\n");
  return 0 ;
}

尝试编写程序task1_2.c,使得可以在水平方向上打印出两个字符小人。


#include <stdio.h>
  int main(){
  printf(" O \t O\n");
  printf("<H>\t<H>\n");
  printf("I I\tI I\n");

  return 0 ;
}

2. 实验任务 2

将程序task2.c补充完整,使得程序能够实现如下功能:从键盘上输入三角形三边,判断它能否构成三角

形。

task2.c

#include <stdio.h>
int main()
{
float a, b, c;
// 输入三边边长
scanf("%f%f%f", &a, &b, &c);
// 判断能否构成三角形
// 补足括号里的逻辑表达式
if(a>0&b>0&c>0&a+b>c&b+c>a&a+c>b)
printf("能构成三角形\n");
else
printf("不能构成三角形\n");
return 0 ;
}

结果:

3. 实验任务 3

将程序task3.c补充完整。使得程序实现如下功能:

只有当用户两次回答都是小写y或大写Y时,才会打印输出:罗马不是一天建成的, 继续保持哦:)

否则,会打印输出:罗马不是一天毁灭的, 我们来建设吧

task3.c

#include <stdio.h>
int main()
{
char ans1, ans2; // 用于保存用户输入的答案
printf("每次课前认真预习、课后及时复习了没? (输入y或Y表示有,输入n或N表示没有):");
ans1 = getchar(); // 从键盘输入一个字符,赋值给ans
getchar(); // 思考这里为什么要加这一行。试着去掉这一行,看看对运行有没有影响。
printf("\n动手敲代码实践了没? (输入y或Y表示敲了,输入n或N表示木有敲) : ");
ans2 = getchar();
if ((ans1=='y'||ans1=='Y')&(ans2=='y'||ans2=='Y')){
    printf("\n罗马不是一天建成的, 继续保持哦:)\n");
} // 待补足,判断用户回答ans1和ans2都是小写y或大写Y
else
printf("\n罗马不是一天毁灭的, 我们来建设吧\n");
return 0 ;
}

程序填写正确后,预期测试结果如下:



4. 实验任务 4

在C开发环境下,输入如下代码。

程序中line9和line15包含语法错误,找出并修改错误后,编译、运行程序,从键盘正确输入数据。

使得:

int型变量a1, a2, a3分别获得整数 1 、 2 、 3
char型变量c1, c2,c3分别获得字符'x' 'y' 'z'
double型变量x, y分别获得小数3.2和4.

task4.c

#include<stdio.h>
int main()
{
double x, y;
char c1, c2, c3;
int a1, a2, a3;
scanf("%d%d%d", &a1, &a2, &a3);
printf("a1 = %d, a2 = %d, a3 = %d\n", a1,a2,a3);

scanf("%c%c%c", &c1, &c2, &c3);
printf("c1 = %c, c2 = %c, c3 = %c\n", c1, c2, c3);

scanf("%lf,%lf", &x, &y);
printf("x = %lf, y = %lf\n",x, y);
return 0;
}

程序正确修改,并且,正确录入数据后,预期各变量输出如下:


![](/i/l/?n=23&i=blog/3291102/202310/3291102-20231007112425731-1399504635.png)

5. 实验任务 5

10 亿秒(\(10^9\)s)约等于多少年?要求结果四舍五入取整。补足程序task5.c,完成计算,并打印输出。

补足代码task5.c

//计算10亿秒约等于多少年,并打印输出
#include <stdio.h>
int main()
{
int year;
// 补足代码
float res;
res=1000000000.0/60.0/60.0/24.0/365.0;
if(res-int(res)>=0.5){
    year=int(res)+1;
}
else{
    year=int(res);
}
printf("10亿秒约等于%d年\n", year);
return 0;
}



6. 实验任务 6

在c开发环境下,编写、编译、运行一个简单的算术运算程序,实现以下计算。

task6_1.c

#include <stdio.h>
#include <math.h>

int main()
{
double x, ans;

scanf("%lf", &x);
ans = pow(x, 365 );
printf("%.2f的 365 次方: %.2f\n", x, ans);

return 0 ;
}

编译后,运行程序 3 次,分别输入1.0, 1.01, 0.99,观察运行结果。

使用task6_1.c进行运算时,要分别运行程序 3 次。对task6_1.c稍做修改,借助循环,使得程序运行一

次,就可以完成多次计算。

task6_2.c

#include <stdio.h>
#include <math.h>

int main()
{
double x, ans;

while(scanf("%lf", &x) != EOF)
{
ans = pow(x, 365 );

编译、运行程序,分别输入1.0, 1.01, 0.99,观察运行结果。结束计算时,按下Ctrl+Z键。(要同时按

下键盘上的Ctrl键和字母Z键;在visual studio中,需要按下Ctrl+Z键 3 次))。



7. 实验任务 7

编写一个简单的计算程序task7.c,实现摄氏度温度C与华氏度温度F的转换:

要求:

使用多组输入方式,支持运行一次程序能进行多次计算 (参考实验任务 6 的task6_2.c代码写法)

温度保留到小数点后两位

task7.c:

#include <stdio.h>

int main(){
    float f,c;
    while (scanf("%f",&c)!=EOF)
    {
        f=9.0/5.0*c+32;
        printf("摄氏度c=%.2f时,华氏度f=%.2f\n",c,f);
    }
    
    
}

程序正确编写后,预期运行测试效果如下:

8. 实验任务 8

编写C程序task8.c,用海伦公式计算三角形面积。

要求:

从键盘输入三角形三边边长,在屏幕上打印输出面积(面积保留到小数点后 3 位)

使用多组输入方式,支持运行一次程序能进行多次计算 (参考实验任务 6 的task6_2.c代码写法)

注*:假定输入的三角形三边边长都满足构成三角形的条件(不考虑输入数据不能构成三角形的情形)

task8.c:

#include <stdio.h>
#include<math.h>
int main(){
    int a,b,c;
    float t,s;
    while(scanf("%d%d%d",&a,&b,&c)!=EOF)
    {
        s=(a+b+c)/2.0;
        t=pow(s*(s-a)*(s-b)*(s-c),0.5); 
        printf("a=%d,b=%d,c=%d,area=%.4f\n\n",a,b,c,t);
    }


}

程序正确编写后,预期测试效果如下:

四、实验结论

1. 实验任务 1

此部分书写内容:

给出在垂直方向上打印两个字符小人的c程序源代码task1_1.c,以及,运行结果截图

#include <stdio.h>
  int main(){
  printf(" O \n");
  printf("<H>\n");
  printf("I I\n");
  printf(" O \n");
  printf("<H>\n");
  printf("I I\n");
  return 0 ;
}

截图:

给出在水平方向上打印两个字符小人的c程序源代码task1_2.c,以及,运行结果截图


#include <stdio.h>
  int main(){
  printf(" O \t O\n");
  printf("<H>\t<H>\n");
  printf("I I\tI I\n");

  return 0 ;
}

截图:

2. 实验任务 2

此部分书写内容:

补充完整并能正确运行的c程序源代码task2.c,及,运行测试结果截图

#include <stdio.h>
int main()
{
float a, b, c;
// 输入三边边长
scanf("%f%f%f", &a, &b, &c);
// 判断能否构成三角形
// 补足括号里的逻辑表达式
if(a>0&b>0&c>0&a+b>c&b+c>a&a+c>b)
printf("能构成三角形\n");
else
printf("不能构成三角形\n");
return 0 ;
}

结果:

3. 实验任务 3

task3.c

#include <stdio.h>
int main()
{
char ans1, ans2; // 用于保存用户输入的答案
printf("每次课前认真预习、课后及时复习了没? (输入y或Y表示有,输入n或N表示没有):");
ans1 = getchar(); // 从键盘输入一个字符,赋值给ans
getchar(); // 思考这里为什么要加这一行。试着去掉这一行,看看对运行有没有影响。
printf("\n动手敲代码实践了没? (输入y或Y表示敲了,输入n或N表示木有敲) : ");
ans2 = getchar();
if ((ans1=='y'||ans1=='Y')&(ans2=='y'||ans2=='Y')){
    printf("\n罗马不是一天建成的, 继续保持哦:)\n");
} // 待补足,判断用户回答ans1和ans2都是小写y或大写Y
else
printf("\n罗马不是一天毁灭的, 我们来建设吧\n");
return 0 ;
}

程序填写正确后,预期测试结果如下:


回答问题

当把源代码line9去掉后,重新编译运行,结果是什么样的?

输入第一个字符后的回车键会被第二个getchar()接收,如果不加line9会把回车赋值给ans2.

4. 实验任务 4

#include<stdio.h>
int main()
{
double x, y;
char c1, c2, c3;
int a1, a2, a3;
scanf("%d%d%d", &a1, &a2, &a3);
printf("a1 = %d, a2 = %d, a3 = %d\n", a1,a2,a3);

scanf("%c%c%c", &c1, &c2, &c3);
printf("c1 = %c, c2 = %c, c3 = %c\n", c1, c2, c3);

scanf("%lf,%lf", &x, &y);
printf("x = %lf, y = %lf\n",x, y);
return 0;
}

程序正确修改,并且,正确录入数据后,预期各变量输出如下:


![](/i/l/?n=23&i=blog/3291102/202310/3291102-20231007112425731-1399504635.png)

5. 实验任务 5

//计算10亿秒约等于多少年,并打印输出
#include <stdio.h>
int main()
{
int year;
// 补足代码
float res;
res=1000000000.0/60.0/60.0/24.0/365.0;
if(res-int(res)>=0.5){
    year=int(res)+1;
}
else{
    year=int(res);
}
printf("10亿秒约等于%d年\n", year);
return 0;
}



6. 实验任务 6

task6_2.c

#include <stdio.h>
#include <math.h>

int main()
{
double x, ans;

while(scanf("%lf", &x) != EOF)
{
ans = pow(x, 365 );
printf("%.2f的365次方: %.2f\n", x, ans);
printf("\n");
}
return 0;
}

测试结果:

7. 实验任务 7

task7.c:

#include <stdio.h>

int main(){
    float f,c;
    while (scanf("%f",&c)!=EOF)
    {
        f=9.0/5.0*c+32;
        printf("摄氏度c=%.2f时,华氏度f=%.2f\n",c,f);
    }
    
    
}

程序正确编写后,预期运行测试效果如下:

8. 实验任务 8

task8.c:

#include <stdio.h>
#include<math.h>
int main(){
    int a,b,c;
    float t,s;
    while(scanf("%d%d%d",&a,&b,&c)!=EOF)
    {
        s=(a+b+c)/2.0;
        t=pow(s*(s-a)*(s-b)*(s-c),0.5); 
        printf("a=%d,b=%d,c=%d,area=%.4f\n\n",a,b,c,t);
    }


}

程序正确编写后,预期测试效果如下:

标签:main,int,scanf,输入输出,程序,C语言,printf,编写,include
From: https://www.cnblogs.com/PetroniusMo/p/17745751.html

相关文章

  • maestro studio 简化编写测试worflow 的工具
    对于自己编写workflow有时可能会比较复杂,maestrostudio提供了基于ai的强大能力,同时可以实时模拟器的页面与web集成对于测试人员来说是一个很不错的选择,很值得看看,同时因为maestrostudio也是开源的,代码上也值得学习参考参考资料https://maestro.mobile.dev/getting-started......
  • 实验1C语言输入输出和简单程序编写
    实验任务1task1.c源代码:1//打印一个字符小人23#include<stdio.h>4intmain()5{6printf("0\n");7printf("<H>\n");8printf("II\n");91011return0;12} 运行截图:task1_1.c源代......
  • C语言阶乘for循环语句的使用
    #include<stdio.h>intmain(){inti=0,n=0;ret=1;scanf_s("%d",&n);//scanf_s作用是避免在编译器中出现不安全影响代码编译 for(i=1;i<=n;i++)   { ret=ret*i;    } printf("%d\n",ret); return0;}用于输入n的阶乘利用for语句解决求1~10阶乘的......
  • C语言求1~n的阶乘的和的进阶优化
    #include<stdio.h>intmain(){ intret=1; intsum=0; intn=0;for(n=1;n<=10;n++)//10可以变成任意值 { ret=ret*n; sum=sum+ret; } printf("%d",sum); return0;}......
  • 实验1 C语言输入输出和简单程序编写
    一1_1.c1#include<stdio.h>23intmain()4{5printf("o\n");6printf("<H>\n");7printf("II\n");8printf("o\n");9printf("<H>\n");10......
  • 实验1 C语言输入输出和简单程序编写
    实验1实验1-11//打印一个字符小人23#include<stdio.h>4intmain()5{6printf("O\n");7printf("<H>\n");8printf("II\n");9printf("O\n");10printf("<H>\......
  • 【C语言入门】快速排序函数的应用
    快速排序函数qsortvoidqsort(void*base,typenitems,typesize,int(cmp)(constvoid*p1,constvoid*p2));参数说明:base  指针要排序的数组的首元素指针nitems  数组元素的总个数size  数组中每一个元素的字节大小cmp  函数指针(用来比较两个元素的函数)比......
  • 求最大公约数的三种方法:C语言
    求最大公约数之穷举法求最大公约数之穷举法inta,b,c,gcd;scanf("%d%d",&a,&b);c=a<b?a:b;inti=1;for(i=c;i>=1;i--){if(a%i==0&&b%i==0){gcd=i;printf("GCD=%d\n",gcd);......
  • sv的LSB 使用+SV的protect类型+RAL模型的lock原因+C语言结构体中的冒号用法+uvm版本在
    sv的LSB使用https://blog.csdn.net/gsjthxy/article/details/90722378等价关系[LSB+:STEP]=[LSB+STEP:LSB]伪代码:bit[1023:0]mem;bit[7:0]data;j=0..100mem[j*8+:8]=data;//[7:0],[15:8],[23:16]SV的protect类型https://blog.csdn.net/qq_37573794/ar......
  • 常见的C语言执行效率优化方法
    C语言之心效率优化写代码时考虑代码的执行效率是一个好习惯,嵌入式开发多年,让自己养成了这样的习惯。优化C语言代码的执行效率是一项重要的任务,可以通过多种方法和注意事项来实现。下面列出了一些常用的方法和注意事项,并结合具体实例进行详细讲解:选择合适的数据结构使用合适的数......