網站首頁 編程語言 正文
一、本文的編譯環境
本文的編譯環境使用的是集成開發環境:Visual Studio 2019
Visual Studio 2019官網鏈接如下
Visual Studio 2019官網鏈接
Visual Studio 2019集成的開發環境的特點有
- Visual Studio 2019默認安裝Live Share代碼協作服務。
- 幫助用戶快速編寫代碼的新歡迎窗口、改進搜索功能、總體性能改進。
- Visual Studio IntelliCode AI幫助。
- 更好的Python虛擬和Conda支持。
- 以及對包括WinForms和WPF在內的.NET Core 3.0項目支持等 。
前面文章的所有數組都在代碼中指定了固定的長度。也可以定義其長度在程序運行期間確定的數組。下面是一個示例:
二、一維數組在執行期間確定長度
size_t size = 0;
printf ("Enter the number of elements you want to store: ") ;
scanf ("%zd", &size) ;
float values[size] ;
在這段代碼中,把從鍵盤上讀取的一一個值放在size中。接著使用size的值指定數組array的長度。
因為size_t是用實現代碼定義的整數類型,所以如果嘗試使用%d讀取這個值,就會得到一個編譯錯誤。
%zd中的z告訴編譯器,它應用于size_t, 所以無論整數類型size_t是什么,編譯器都會使說明符適用于讀取操作。
三、二維數組在執行期間確定長度
還可以在執行期間確定二維或多維數組中的任意維或所有維。
例如:
size_ t rows = 0;
size t columns = 0;
printf ("Enter the number of rows you want to store: ") ;
scanf ("%zd",&rows) ;
printf ("Enter the number of columns in a row: ") ;
scanf ("%zd",&columns) ;
float beans [ rows] [columns] ;
這里從鍵盤讀取二維數組中的兩個維。
這兩個數組維都在執行期間確定。
四、一維變長數組實例
一維變長數組實例如下所示
在下面的程序中,一維變長數組是可以用的。
size_t nGrades = 10; // Number of grades
printf("Enter the number of grades: ");
scanf("%zd", &nGrades);
int grades[nGrades]; // Array storing nGrades values
long sum = 0L; // Sum of the numbers
float average = 0.0f; // Average of the numbers
printf("\nEnter the %u grades:\n", nGrades); // Prompt for the input
// Read the ten numbers to be averaged
for (size_t i = 0; i < nGrades; ++i)
{
printf("%2zd> ", i + 1);
scanf("%d", &grades[i]); // Read a grade
sum += grades[i]; // Add it to sum
}
printf("The grades you entered are:\n");
for (size_t i = 0; i < nGrades; ++i)
{
printf("Grade[%2zd] = %3d ", i + 1, grades[i]);
if ((i + 1) % 5 == 0) // After 5 values
printf("\n"); // Go to a new line
}
average = (float)sum / nGrades; // Calculate the average
printf("\nAverage of the %zd grades entered is: %.2f\n", nGrades, average);
下面是一些輸出:
Enter the number of grades: 12
Enter the 12 grades:
1> 56
2> 67
3> 78
4> 67
5> 68
6> 56
7> 88
8> 98
9> 76
10> 75
11> 87
12> 72
The grades you entered are:
Grade[1]=56Grade[2]=67Grade[3]=78Grade[4]=67Grade[5]=68
Grade[6]=56Grade[7]=88Grade[8]=98Grade[9]=76Grade[10]=75
Grade[11] = 87 Grade[12] = 72
Average of the 12 grades entered is: 74.00
本例定義了一個變量nGrades來存儲要輸入的分數個數,并從鍵盤上讀取數值:
size_t nGrades = 10; // Number of grades
printf("Enter the number of grades: ");
scanf("%zd", &nGrades);
再使用讀入nGrades的值,來定義包含所需元素個數的grades數組:
int grades[nGrades]; // Array storing nGrades values
顯然,數組的長度值必須在這個語句之前定義。.
五、完整程序
本文的完整程序如下所示
5.1 Main.h 文件程序
#ifndef MAIN_H
#define MAIN_H
#include <stdio.h>
#include <stdlib.h>
#endif
5.2 Main.c 文件程序
#define _CRT_SECURE_NO_WARNINGS
#include "Main.h"
int main()
{
system("color 3E");
size_t nGrades = 10; // Number of grades
printf("Enter the number of grades: ");
scanf("%zd", &nGrades);
int grades[nGrades]; // Array storing nGrades values
long sum = 0L; // Sum of the numbers
float average = 0.0f; // Average of the numbers
printf("\nEnter the %u grades:\n", nGrades); // Prompt for the input
// Read the ten numbers to be averaged
for (size_t i = 0; i < nGrades; ++i)
{
printf("%2zd> ", i + 1);
scanf("%d", &grades[i]); // Read a grade
sum += grades[i]; // Add it to sum
}
printf("The grades you entered are:\n");
for (size_t i = 0; i < nGrades; ++i)
{
printf("Grade[%2zd] = %3d ", i + 1, grades[i]);
if ((i + 1) % 5 == 0) // After 5 values
printf("\n"); // Go to a new line
}
average = (float)sum / nGrades; // Calculate the average
printf("\nAverage of the %zd grades entered is: %.2f\n", nGrades, average);
system("pause");
return 0;
}
原文鏈接:https://blog.csdn.net/m0_47419053/article/details/128869234
相關推薦
- 2022-11-27 Rust語言中的String和HashMap使用示例詳解_Rust語言
- 2022-03-22 C語言字符串函數入門_C 語言
- 2023-02-12 基于Redis驗證碼發送及校驗方案實現_Redis
- 2022-09-06 本地搭建minio文件服務器(使用bat腳本啟動)的方法_服務器其它
- 2022-11-03 ahooks?useVirtualList?封裝虛擬滾動列表_React
- 2022-05-21 Python學習之包與模塊詳解_python
- 2022-10-14 yum-config-manager 命令找不到的解決方法
- 2023-12-07 WARNING: Access control is not enabled for the dat
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支