高级语言程序设计课程第四次个人作业
前置说明
- 这个作业属于 2026 级高级语言程序设计课程 : https://edu.cnblogs.com/campus/fzu/2026gjyycxsj
- 这个作业的要求:https://edu.cnblogs.com/campus/fzu/2026gjyycxsj/homework/16750
- 学号:0102600227
- 姓名:傅铄城
补充上一次作业的运算优先级说明
| 优先级 | 运算符 | 名称 | 含义 / 作用 |
|---|---|---|---|
| 高 | () |
函数调用 / 括号 | 改变运算顺序;调用函数 |
[] |
下标 | 数组取元素:a[i] |
|
++ |
自增 | 变量加 1(前置先加后用,后置先用后加) | |
-- |
自减 | 变量减 1(同理) | |
! |
逻辑非 | 真变假、假变真:!0 为 1 |
|
~ |
按位取反 | 0 变 1、1 变 0(二进制位) | |
-(一元) |
负号 | 取相反数:-5 |
|
*(一元) |
解引用 | 通过指针取它指向的值:*p |
|
&(一元) |
取地址 | 取变量的地址:&a |
|
sizeof |
求大小 | 返回类型/变量占的字节数:sizeof(int) |
|
* / % |
乘、除、取模 | 5/2=2,5%2=1(取余数) |
|
+ -(二元) |
加、减 | 普通四则运算 | |
<< >> |
左移、右移 | 二进制位整体左/右移:1<<3 得 8 |
|
< <= > >= |
关系比较 | 结果为 1(真)或 0(假) | |
== != |
等于、不等于 | 判断是否相等,结果 1 或 0 | |
&(二元) |
按位与 | 对应位都为 1 才为 1 | |
^ |
按位异或 | 对应位不同为 1(同 0 异 1) | |
| |
按位或 | 对应位有 1 就为 1 | |
&& |
逻辑与 | 两边都真才真;左边为假右边不算(短路) | |
|| |
逻辑或 | 有一边真就真;左边为真右边不算(短路) | |
?: |
条件运算符 | 条件 ? 值1 : 值2,唯一三目运算符 |
|
= += -= 等 |
赋值 | 把右边赋给左边;a+=b 即 a=a+b |
|
| 低 | , |
逗号 | 顺序求值,整个式子的值取最后一个 |
本次作业内容
程序改错或运行输出
-
#include<stdio.h> int main(void) // 对用户输入的整数求和 { long num; long sum = 0L; int status; printf("Please enter an integer to be summed "); printf("(press 'q' to quit): "); status = scanf("%ld", &num);//scanf的返回值是成功读入的变量的个数 while (status == 1) // == means "is equal to" { sum = sum + num; //这是一个累加器 printf("Please enter next integer (press 'q' to quit): "); status = scanf("%ld", &num); //重新判断输入是否有效 } printf("Those integers' sum to %ld.\n", sum); return 0; }终端情况:
![image]()
-
#include <math.h> #include <stdio.h> int main(void) { const double ANSWER = 3.14159; // const 表示一个只读常量 double response; printf("What is the value of pi?\n"); scanf("%lf", &response); while (fabs(response - ANSWER) > 0.0001) //判断误差是否于可接受范围 { printf("Try again!\n"); scanf("%lf", &response); } printf("Close enough!\n"); return 0; }终端情况:
![image]()
程序自主设计
- while 与 do ... while.
而另一种形式:#include<bits/stdc++.h> using namepace std; int main(){ double i=1.0,ans=0,pi; int f=1; while(1.0/i>=0.0001){ ans+=1.0*f/i; f=-f; i+=2; } pi=4.0*ans; cout<<pi<<endl; return 0; }
-区别在于 do-while 结构会先运行一次内部代码 终端页面如下:#include<stdio.h> int main(void){ double i=1.0,ans=0,pi; int f=1; do{ ans+=1.0*f/i; f=-f; i+=2; }while(1.0/i>=0.0001) pi=4.0*ans; printf("%lf\n",pi); return 0; }![image]()
- 设计一个程序,实现功能:逻辑表达式中的运算符,只有会影响表达式求值时,才会执行。
#include<stdio.h>
#include<stdbool.h>
int main(void){
int a=1,b=0,c,d;
bool t,f;
t=a>=b;
if(t || b++) c=5*a;
else b=t;
f= b && c++;
d= (a++) + (f++);
printf("a=%d b=%d c=%d d=%d\nt=%d f=%d",a,b,c,d,t,f);
return 0;
}
- 终端界面
![image]()
- 用for循环输出六行,第一行有FEDCBA,第二行是FEDCB,第三行是FEDC....,以此类推。
#include<stdio.h>
#include<string.h
int main(void){
char c[]="ABCDEF";
for(int i=0;i<strlen(c);i++){
for(int j=strlen(c);j>0;j--){
printf("%c",c[j-i]);
}
printf("\n");
}
return 0;
}
终端结果:
4. 编程输入n, 计算s=1+(1+2)+(1+2+3)+…+(1+2+3+4+…n)。、
#include<stdio.h>
int main(void){
int n,ans=0;
scanf("%d",&n);
int a[100];
for(int i=1;i<=n;i++){
a[i]=i*(i+1)/2;
}
for(int i=1;i<=n;i++){
ans+=a[i];
}
printf("%d",ans);
return 0;
}
终端结果: 
5. 用for循环给一组整型类型的数组进行赋值,输出,以及求和,数组长度为8。
#include <stdio.h>
int main() {
int a[8], sum = 0;
for (int i = 0; i < 8; i++) {
a[i] = i + 1;
sum += a[i];
}
printf("数组: ");
for (int i = 0; i < 8; i++) printf("%d ", a[i]);
printf("\n所有元素的和为: %d\n", sum);
return 0;
}
- 设计一个if和else的多分支程序(分支数目大于3),该多分支程序再用switch语句进行改写,同时设计一个使用条件运算符(?:)的双分支语句。
#include <stdio.h>
//本程序设计为成绩的等级划分
int main() {
int score;
printf("输入成绩: ");
scanf("%d", &score);
// if-else
char grade;
if (score >= 90) grade = 'A';
else if (score >= 80) grade = 'B';
else if (score >= 70) grade = 'C';
else if (score >= 60) grade = 'D';
else grade = 'E';
printf("if-else 计算的等级: %c\n", grade);
// switch
switch (score / 10) {
case 10: case 9: grade = 'A'; break;
case 8: grade = 'B'; break;
case 7: grade = 'C'; break;
case 6: grade = 'D'; break;
default: grade = 'E'; break;
}
printf("switch 计算的等级: %c\n", grade);
printf("是否及格: %s\n", score >= 60 ? "是" : "否");
return 0;
}
- 设计一个循环程序,再循环中用break和continue语句,实现不同的程序效果,给出结果并讨论。
#include <stdio.h>
int main() {
// break:立即退出当前层循环且不再循环
printf("break 的示例:\n");
for (int i = 1; i <= 20; i++) {
if (i % 7 == 0) {
printf("找到 %d,退出循环\n", i);
break;
}
printf("%d ", i);
}
printf("\n\n");
// continue:跳过当前循环,开启一次新循环
printf("continue 的示例:\n");
for (int i = 1; i <= 10; i++) {
if (i % 3 == 0) {
continue;
}
printf("%d ", i);
}
printf("\n");
return 0;
}
- 设计一个程序求100~200间的全部素数,给出算法思想、传统流程图、程序NS流程图。
#include <stdio.h>
int main() {
printf("100~200 之间的素数:\n");
for (int n = 100; n <= 200; n++) {
int isPrime = 1;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
isPrime = 0;
break;
}
}
if (isPrime) printf("%d ", n);
}
printf("\n");
return 0;
}
关于流程图(由自己描述,用 AI 生图)


- 书本第 6 章 6.16 编程练习题目中的第 1,5,7,10,13,16,18 题 & 书本第 7 章7.12 编程练习题目中的第 1,2,4~5,7 题




浙公网安备 33010602011771号