第九章 結構體與共用體

姓名:呂家浩? ? 實驗地點:教學樓514教室????實驗時間:4月30日

一、本章要點

1.通過實驗理解結構體和共用體的數據結構
2.結構體、共用體中數組的使用及變量的賦值
3.結構體和共用體定義時的嵌套使用(嵌套使用的結構體必須先定義)

二、實驗內容

1.實驗練習:9.1

問題描述:試利用結構體類型描述年、月、日,輸入一個日期,統計該日期是本年度第多少天。

流程圖

實驗代碼

#include<stdio.h>
main()
{struct date{int year;int month;int day;};struct date a;int i,days;printf("輸入年,月,日:"); scanf("%d%d%d",&a.year,&a.month,&a.day);for(i=1;i<a.month;i++){if(i==1||i==3||i==5||i==7||i==8||i==10)days+=31;else if(i==4||i==6||i==9||i==11)days+=30;else if(((a.year%4==0)&&(a.year%100!=0))||(a.year%400==0))days+=29;elsedays+=28;    }days+=a.day-1;printf("%d年%d月%d日是該年的%d天",a.year,a.month,a.day,days);} 

運行結果:

問題分析:本題無問題,就是需要注意一下最后面計算天數的時候需要-1

2.實驗練習9.2

問題描述:在選舉中,假設有6位候選人,有10個人參加投票(只能對一位候選人投票)。用結構體數組統計各候選人的得票數。

流程圖

實驗代碼:

#include<stdio.h>
#include<string.h>
struct person
{char name[20];int count;}a[6]={"zhang",0,"li",0,"wang",0,"zhao",0,"liu",0,"zhu",0};
main(){int i,j;char abc[20];for(i=1;i<=10;i++){printf("輸入候選人名字:");scanf("%s",abc);for(j=0;j<6;j++)if(strcmp(abc,a[j].name)==0)a[j].count++;         }for(j=0;j<6;j++)printf("%s:%d\n",a[j].name,a[j].count);}

運行結果:

問題分析:本題無問題,需注意strcmp函數的用法

?

3.實驗練習:9.3

問題描述:

編寫程序填寫表格,從鍵盤輸入學生和教師的信息,若是學生,則班級/職稱欄填入班級;若是教師,則班級/職稱欄填入職稱。

流程圖

實驗代碼

#include<stdio.h>
#include<stdlib.h>
struct
{int number;char name[20];char job;union{int classes;char position[10];}category;
}person[2];
main()
{int i;for(i=0;i<2;i++){scanf("%s%d %c",&person[i].name,&person[i].number,&person[i].job);if(person[i].job=='s')scanf("%d",&person[i].category.classes);else if(person[i].job=='t')scanf("%s",&person[i].category.position);else{printf("Input error!");abort();}}printf("\n");printf("編號     姓名   職業    班級/職務\n");for(i=0;i<2;i++){if(person[i].job=='s')printf("%d    %s     %c      %d\n",person[i].number,person[i].name,person[i].job,person[i].category.classes);elseprintf("%d    %s     %c      %s\n",person[i].number,person[i].name,person[i].job,person[i].category.position);}
}

運行結果:

問題分析:在程序運行的時候,輸入相關的數據按照書上的來回導致程序結果有很大的問題,需要按照程序代碼依次輸入

4.實驗練習:9.4

問題描述:

n個人圍成一圈,從第s個人開始按順時針1,2,3,……,m的順序報數,數到m的人出圈,然后從出圈的下一個人開始重復此過程,輸出所有出圈人的順序。n,s,m從鍵盤輸入。

流程圖

實驗代碼

#include<stdio.h>
#define N 10
struct child
{int no;int next;};struct child link[N];main(){int i,n,m,s,count,h;printf("輸入圍圈人數,出圈人數,開始報數位置:");scanf("%d%d%d",&n,&m,&s);for(i=1;i<=n;i++){if(i==n)link[i].next=1;elselink[i].next=i+1;link[i].no=i;}count=0;if(s==1)h=n;elseh=s-1;printf("出圈順序為:");while(count<n-1){i=0;while(i!=m){h=link[h].next;if(link[h].no)i++;}printf("%d,",link[h].no);link[h].no=0;count++;}for(i=1;i<=n;i++)if(link[i].no!=0)printf("%d",link[i].no); } 

運行結果:

問題分析:無

實驗小結:

要明白結構體變量和共同體變量的區別和用法,有時候要注意問題的流程和思路,不能一味地認為書上的就是對的。

?

轉載于:https://www.cnblogs.com/ljh26/p/11109454.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247672.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247672.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247672.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

H5-localStorage數據存儲總結

一、什么是localStorage、sessionStorage 在HTML5中&#xff0c;新加入了一個localStorage特性&#xff0c;這個特性主要是用來作為本地存儲來使用的&#xff0c;解決了cookie存儲空間不足的問題(cookie中每條cookie的存儲空間為4k)&#xff0c;localStorage中一般瀏覽器支持的…

正則校驗與時間格式化

// 日期回顯 export function formatTime(data&#xff0c;fametYYYY-MM-DD HH:MMM:SS) {if(famet YYYY-MM-DD HH:MMM:SS){const time new Date(data)const year time.getFullYear()const month time.getMonth() 1const day time.getDate()const hour time.getHours()co…

CometOJ#6 雙倍快樂(簡單DP)

鏈接&#xff1a;https://www.cometoj.com/contest/48/problem/B 題意&#xff1a;給出一串數列&#xff0c;要求在這個數列中找出兩條“不相交”的非下降子序列使得子序列之和最大。“不相交”即不存在任意的ai同時存在于兩個子序列中。 分析&#xff1a;筆者刷題量不多&#…

iOS開發-證書問題精析~

在iOS開發過程中&#xff0c;不可避免的要和證書打交道&#xff0c;真機調試、App上架、打包給測試去測試等都需要搞證書。在此過程中我們會遇到很多的問題&#xff0c;但是如果掌握了真機調試的原理和本質&#xff1b;遇到問題&#xff0c;我們就更容易定位問題之所在&#xf…

selenium+Java自動化

轉載于:https://www.cnblogs.com/arvin-feng/p/11110483.html

html 5 本地數據庫(Web Sql Database)

基于HTML5的Web DataBase 可以讓你在瀏覽器中進行數據持久地存儲管理和有效查詢&#xff0c;假設你的離線應用程序有需要規范化的存儲功能 本文講述如何使用核心方法openDatabase、transaction、executeSql 1.新建一個網頁&#xff0c;比如&#xff1a;test.html 內容如下&am…

前端學習資料及路線名稱網站

IT前端學習資料及路線常用PC端UI組件庫餓了么(Element-UI)https://element.eleme.cn/#/zh-CN常用小程序端UI組件庫uView UIhttp://v1.uviewui.com/名稱網站JQuery文件網https://code.jquery.com/jquery/jQuery手冊&#xff08;pc端&#xff09;http://jquery.cuishifeng.cn/jQu…

JS實現生成一個周對應日期數組

/* 獲取日期和周 */getDateWeek() {/* 得到當前日期的時間戳 */const timestamp Date.now()// const timestamp new Date(2019, 7, 30, 0, 0, 0, 0).getTime()const dateWeek Array.from(new Array(7)).map((_, i) > {/* 得到當前周每一天的時間戳 */const weekTimestamp…

npm升級package.json依賴包

使用npm管理node的包&#xff0c;可以使用npm update <name>對單個包升級&#xff0c;對于npm的版本大于 2.6.1,可以使用命令: npm install -g 升級全局的本地包。 對于版本小于2.6.1的一個一個包的升級實在是太麻煩&#xff0c;就想找到一個升級所有本地包的方法&#x…

Sublime Text 3 快捷鍵匯總

Sublime Text 3非常實用&#xff0c;但是想要用好&#xff0c;老是忘記&#xff0c;匯總一下&#xff0c;方便自己方便別人。 用慣了vim&#xff0c;有些快捷鍵也懶得用了&#xff0c;尤其是在win下面&#xff0c;還有圖形界面&#xff0c;所以個人覺得最有用的還是搜索類&…

Minimal coverage (貪心,最小覆蓋)

題目大意&#xff1a;先確定一個M&#xff0c; 然后輸入多組線段的左端和右端的端點坐標&#xff0c;然后讓你求出來在所給的線段中能夠 把[0, M] 區域完全覆蓋完的最少需要的線段數&#xff0c;并輸出這些線段的左右端點坐標。 思路分析&#xff1a; 線段區間的起點是0&#x…

vuex知識點

Vuex 是一個專為 Vue.js 應用程序開發的狀態管理模式&#xff1b;集中存儲和管理應用的所有組件狀態。 狀態&#xff1a;什么是狀態&#xff0c;我們可以通俗的理解為數據。Vue只關心視圖層&#xff0c;那么視圖的狀態如何來確定&#xff1f;我們知道是通過數據驅動&#xff0c…

Kafka2.0生產者客戶端使用

1 初始化配置 Kafka 通過 KafkaProducer 構造器初始化生產者客戶端的配置。 ??常用的重要配置&#xff0c;詳見官網。 bootstrap.servers&#xff1a;Kafka 集群地址&#xff08;host1:post,host2:post&#xff09;&#xff0c;Kafka 客戶端初始化時會自動發現地址&#xff0…

vuex小例

少廢話&#xff0c;先出東西 vuex main.js import Vue from vue import App from ./App import router from ./router import store from ./store Vue.config.productionTip falsenew Vue({el: #app,router,store,render: xx>xx(App) })store.js 平級目錄未建文件夾import…

[論文筆記]CVPR2017_Joint Detection and Identification Feature Learning for Person Search

Title: Joint Detection and Identification Feature Learning for Person Search; aXiv上該論文的第一個版本題目是 End-to-End Deep Learning for Person SearchAuthors: Tong Xiao1* ; Shuang Li1* ; Bochao Wang2 ; Liang Lin2; Xiaogang Wang1 Affilations: 1.The Chines…

php下的原生ajax請求

瀏覽器中為我們提供了一個JS對象XMLHttpRequet&#xff0c;它可以幫助我們發送HTTP請求&#xff0c;并接受服務端的響應。 意味著我們的瀏覽器不提交&#xff0c;通過JS就可以請求服務器。ajax(Asynchronous Javascript And XML)其實就是通過XHR對象&#xff0c;執行HTTP請求。…

HBase性能優化總結

HBase性能優化方法總結&#xff08;一&#xff09;&#xff1a;表的設計 1. 表的設計 1.1 Pre-Creating Regions 默認情況下&#xff0c;在創建HBase表的時候會自動創建一個region分區&#xff0c;當導入數據的時候&#xff0c;所有的HBase客戶端都向這一個region寫數據&#x…

.NetCore如何使用ImageSharp進行圖片的生成

ImageSharp是對NetCore平臺擴展的一個圖像處理方案&#xff0c;以往網上的案例多以生成文字及畫出簡單圖形、驗證碼等方式進行探討和實踐。 今天我分享一下所在公司項目的實際應用案例&#xff0c;導出微信二維碼圖片&#xff0c;圓形頭像等等。 一、源碼獲取 Git項目地址&…

vue2工程

vue當然可以使用script標簽引入&#xff0c;不需任何依賴即可按照vue的語法進行使用。但中大型商用項目中&#xff0c;還是建議使用工程化方式使用vue&#xff0c;vue提供了官方腳手架vue-cli&#xff0c;可以快速構建vue項目&#xff0c;腳手架會幫助開發者創建好建議的工程目…

flutte的第一個hello world程序

用命令行創建項目&#xff1a; flutter create flutterdemo VSCode或者AS連接手機后 輸入 flutter run 編譯后就可以將默認的代碼顯示在手機上了 開始寫hello world 代碼&#xff0c;這段代碼寫在根目錄\lib\main.dart文件中&#xff0c;也是Flutter主文件。 整個代碼如下 impo…